Не получается скомпилить динамическую библиотеку

Модератор: Модераторы разделов

ikseg
Сообщения: 7

Не получается скомпилить динамическую библиотеку

Сообщение ikseg »

Возникла необходимость написать DL библиотеку для работы с устройством. Изначально функции для работы с девайсом были в одном файле с главной программой. Компиляция командой gcc ladev.cpp проходила без ошибок и программа работала.

При компиляции с флагами для создания динамической библиотеки выдаётся следующее сообщение:
21: error: ‘write’ was not declared in this scope

Выполняю команду gcc -fPIC -c laengine.cpp

часть кода:

Код:

extern "C" { int SendPacket( int , char , char , char , char ); } #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> //#include <PacketConst.h> int DEVICE; int SendPacket( int device, char arg0, char arg1, char arg2, char arg3 ) { char packetBuf[ 4 ]; packetBuf[ 0 ] = arg0; packetBuf[ 1 ] = arg1; packetBuf[ 2 ] = arg2; packetBuf[ 3 ] = arg3; return write( device, packetBuf, sizeof( packetBuf ) ); }


Подскажите пожалуйста, в чём проблема?
Спасибо сказали:
Аватара пользователя
fbi
Сообщения: 34

Re: Не получается скомпилить динамическую библиотеку

Сообщение fbi »

extern "C"
{
int SendPacket( int , char , char , char , char );
}


Опусти под инклюды, т.е:

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
//#include <PacketConst.h>

extern "C"
{
int SendPacket( int , char , char , char , char );
}
Спасибо сказали:
ikseg
Сообщения: 7

Re: Не получается скомпилить динамическую библиотеку

Сообщение ikseg »

fbi писал(а):
26.06.2009 13:00
extern "C"
{
int SendPacket( int , char , char , char , char );
}


Опусти под инклюды, т.е:

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
//#include <PacketConst.h>

extern "C"
{
int SendPacket( int , char , char , char , char );
}



Пробовал, не помогает...
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Не получается скомпилить динамическую библиотеку

Сообщение deninok »

ikseg писал(а):
26.06.2009 11:42
21: error: ‘write’ was not declared in this scope
...
Подскажите пожалуйста, в чём проблема?

Проблема в том, что компилятор не видит функцию write() в данной области видимости, о чём и говорит в сообщении.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Не получается скомпилить динамическую библиотеку

Сообщение eddy »

Надо еще добавить для write:
#include <unistd.h>
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали: