3

所以我收到了这个警告:

initialization makes integer from pointer without a cast

在以下代码中:

void receive(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *buffer)

{

const int one = 1;

int LEN = args;      /* THIS IS THE LINE */

struct ipheader *ip;

struct tcpheader *tcp;

老实说,小新手我不确定该怎么做,因为几乎所有搜索都会返回makes pointer from integer

我还收到了这些编译器消息:

/tmp/cci6u7NH.o: In function `main':
ChannelBunny.c:(.text+0x448): undefined reference to `pthread_create'
ChannelBunny.c:(.text+0x4b7): undefined reference to `pthread_join'
/tmp/cci6u7NH.o: In function `receive':
ChannelBunny.c:(.text+0xcb6): undefined reference to `nthol'
ChannelBunny.c:(.text+0xcdf): undefined reference to `nthol'
collect2: ld returned 1 exit status

通过使用摆脱了类似的 pcap 问题,-l pcap但这对其他两个不起作用。它刚刚返回:

gcc: pthread: No such file or directory
gcc: nthol: No such file or director

我猜我必须下载一些东西?还是我必须使用另一个命令。(如果这对您有用,我正在使用 Backtrack5)。

4

3 回答 3

7

你应该做

int LEN = *args;

args 是一个指针,*args 是它所指向的值。此外,您不应该将 u_char 放入 int 中。

对于 nthol: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms740069 (v=vs.85).aspx

于 2012-08-18T15:41:49.990 回答
3

您可以使用atoi()函数将 char* 转换为 int。

关于 pthread 的链接错误,试试把-lpthread你的编译命令

于 2012-08-18T15:33:33.160 回答
0

你传递一个指针

u_char *args

您尝试将其分配给整数

int LEN = args;

错误消息说明了这一点。

“从指针生成整数”

真正的问题是你认为 args 是什么?仅从外观来看,我猜它包含一些论点,而不是一些论点的长度?

于 2012-08-18T17:39:35.573 回答