所以我收到此警告:
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
通过使用
-l pcap
摆脱了类似的 pcap 问题,但这对其他两个不起作用。它刚刚返回:
gcc: pthread: No such file or directory
gcc: nthol: No such file or director
我想我必须下载一些东西?或者我必须使用另一个命令。 (我正在使用 Backtrack5,如果这对你有用的话)。
你应该这样做
int LEN = *args;
args是一个指针,*args是它指向的值。另外,你不应该将 u_char 放入 int 中。
对于nthol:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740069(v=vs.85).aspx
您可以使用
atoi()
函数将 char* 转换为 int。
关于pthread的链接错误,尝试在你的编译命令上加上
-lpthread
你传递了一个指针
u_char *args
您尝试将其分配给一个整数
int LEN = args;
错误消息是这样说的。
“从指针生成整数”
真正的问题是你认为 args 是什么? 仅从外观来看,我猜它包含一些参数,而不是某些参数的长度?