Модератор: Модераторы разделов
ikseg
Сообщения: 7
Сообщение
ikseg » 26.06.2009 11:42
Возникла необходимость написать 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
Сообщение
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 );
}
ikseg
Сообщения: 7
Сообщение
ikseg » 29.06.2009 10:19
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
Сообщение
deninok » 30.06.2009 10:15
ikseg писал(а): ↑ 26.06.2009 11:42
21: error: ‘write’ was not declared in this scope
...
Подскажите пожалуйста, в чём проблема?
Проблема в том, что компилятор не видит функцию
write() в данной области видимости, о чём и говорит в сообщении.
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Сообщение
eddy » 30.06.2009 11:18
Надо еще добавить для write:
#include <unistd.h>
RTFM
-------
KOI8-R - патриотичная кодировка