запара
Ну мне умние люди и говорят - мол ёто unsigned char.
Код:
typedef unsigned char u8;
Ёсть ф-я примерно с таким вот описаниём :
Код:
int parse_ex (u8*, int , int, int, u8*,char*)
и переменые
Код:
const u_char *pkt_data
char packetbuf[0x100000]; //32
char packetbuf[0x100000]; //32
использую
Код:
parse_ex((u8*)pkt_data,1,1,1,
packetbuf,//<- вот ошибка
packetbuf);
packetbuf,//<- вот ошибка
packetbuf);
252 ...dev-pcap_s2\main.cpp invalid conversion from `char*' to `u8*'
252 ...dev-pcap_s2\main.cpp initializing argument 5 of `int parse_ex(u8*, int, int, int, u8*, char*)'
ёсли
Код:
parse_ex((u8*)pkt_data,1,1,1,
(u8*)packetbuf,//<- вот ошибка
packetbuf);
(u8*)packetbuf,//<- вот ошибка
packetbuf);
[Linker error] undefined reference to `parse_ex(unsigned char*, int, int, int, unsigned char*, char*)'
Вопрос что же такоё u8???
--------------------------------------------------
Типы тут ни при чем.
Это ошибка не компилятора, а линкера. Он не может найти реализацию функции parse_ex. А найти не может потому, что ему не передан соответствующий объектный файл или библиотека.
--------------------------------------------------
релиз ф-ї лежыт в upql.c, для л!нкера в upql.о когда
я привинчую ёво к проекту
g++.exe main.o -o "dev-pcap-sniff.exe" -L"lib" C:/Dev-Cpp/lib/libws2_32.a C:/Dev-Cpp/lib/wpcap.lib upql.o
оно мне:
--------------------------------------------------
main.o(.text+0xc11):main.cpp: undefined reference to `parse_ex(unsigned char*, int, int, int, unsigned char*, char const*)'
upql.o(.text+0x24e):upql.c: undefined reference to `inet_ntoa@4'
upql.o(.text+0x2d1):upql.c: undefined reference to `inet_ntoa@4'
upql.o(.text+0x391):upql.c: undefined reference to `inet_ntoa@4'
upql.o(.text+0x414):upql.c: undefined reference to `inet_ntoa@4'
upql.o(.text+0x4ae):upql.c: undefined reference to `inet_ntoa@4'
upql.o(.text+0x531):upql.c: more undefined references to `inet_ntoa@4' follow
..................................................upql.o(.text+0x628):upql.c: undefined reference to `ntohs@4'
upql.o(.text+0xa3d):upql.c: undefined reference to `inet_ntoa@4'
collect2: ld returned 1 exit status
--------------------------------------------------
make.exe: *** [dev-pcap-sniff.exe] Error 1
Получаетса что сама то parse_ex найдена но ненайдены inet_ntoa@4 и ntohs@4 ???
вопрос: где взять inet_ntoa@4 и ntohs@4 для проекта
я подлючил все библиотеки в которых в имени есть чёта типа *w*s*
А результат всё тот же
Цитата:
Originally posted by 0m3r
inet_ntoa@4 и ntohs@4 определены в winsock2.h
я подлючил все библиотеки в которых в имени есть чёта типа *w*s*
А результат всё тот же
inet_ntoa@4 и ntohs@4 определены в winsock2.h
я подлючил все библиотеки в которых в имени есть чёта типа *w*s*
А результат всё тот же
Project->Settings->Link:
Object/Library modules -> добавь туда WS2_32.LIB.
Тогда все будет в ажуре.
А вообще в таких случаях MSDN очень помогает.
Вот например выдержка для ntohs:
Requirements
Client: Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server.
Header: Declared in Winsock2.h.
Library: Use Ws2_32.lib.
Ладно попробую вместо libws2_32.a VC-ную WS2_32.LIB
А winsock2.h я беру с MinGW
У меня В DEV-CPP в winsock2.h эти функции обелены вот так
Код:
DECLARE_STDCALL_P (char *) inet_ntoa(struct in_addr); //INET_NTOA DECLARE in DEV-CPP
......................................
#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) // CYGWIN у меня нету равно как и MSYS
......................................
u_short PASCAL ntohs(u_short); // NTOHS DECLARE in DEV-CPP
.......................................
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
......................................
#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) // CYGWIN у меня нету равно как и MSYS
......................................
u_short PASCAL ntohs(u_short); // NTOHS DECLARE in DEV-CPP
.......................................
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
А вот в VC -ом варианте
Код:
#if INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
char FAR *
WSAAPI
inet_ntoa(
struct in_addr in
);
#endif // INCL_WINSOCK_API_PROTOTYPES
#if INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
u_short
WSAAPI
ntohs(
u_short netshort
);
#endif // INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
char FAR *
WSAAPI
inet_ntoa(
struct in_addr in
);
#endif // INCL_WINSOCK_API_PROTOTYPES
#if INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
u_short
WSAAPI
ntohs(
u_short netshort
);
#endif // INCL_WINSOCK_API_PROTOTYPES
Вопрос как переобявить эти функции в варианте для dev-cpp