希望使Winpcap开发人员包(4.1.2)在Windows 7 64位上运行。我正在使用Cygwin(4.1.10)编译器在Netbeans IDE中使用C/C++进行编程。我想直接从UDP数据包中提取一些GPS数据,而不是使用另一个程序,在此过程中我将其从中间文件中提取出来。如果我不能解决这个问题,那么我接下来将在Ubuntu中尝试一下,看看是否可以在其中运行libpcap(即使Windows是首选的,因为我正在使用其他设备)。这就是我的位置(我的主要资源来自Introduction to the WinPcap Networking Libraries,Using WinPcap in your programs和tcpdump.org上的pcap编程(注意:我无法发布第三个链接,因为它说我的声誉必须更高)):
通过完成上述所有操作,并在没有其他代码的情况下包括 pcap.h header ,便可以编译程序。但是,我一直在引用的安装说明也指出要添加以下两个“其他依赖项”: winpcap.lib 和 Packet.lib Packet.lib
一旦这样做,我将无法编译并获得以下信息:
make[2]: Entering directory '/cygdrive/c/Users/<user>/Documents/NetBeansProjects/GPS_Parcer'
make[2]: *** No rule to make target 'winpcap.lib', needed by 'dist/Debug/Cygwin_4.x-Windows/gps_parcer.exe'. Stop.
make[2]: Leaving directory '/cygdrive/c/Users/<user>/Documents/NetBeansProjects/GPS_Parcer'
nbproject/Makefile-Debug.mk:61: recipe for target '.build-conf' failed
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory '/cygdrive/c/Users/<user>/Documents/NetBeansProjects/GPS_Parcer'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make: *** [.build-impl] Error 2
出于好奇,看看那些依赖是否真的很重要,我删除了它们,然后添加了一些我从tcpdump.org复制的基本代码:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[])
{
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf); //error is here!
if (dev == NULL) {
fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
return(2);
}
printf("Device: %s\n", dev);
return(0);
}
我收到
undefined reference to 'pcap_lookupdev'
错误。我还读到Winpcap可能只能与MS Visual Studio一起使用,所以我实际上不知道那是不是真的。
很抱歉写了这么长时间,但是如果有人对此有一些见解或经验,将不胜感激。
最佳答案
同一套仪器也有类似的问题。今天,我的经历变得成功,我找到了解决方案!
project properties -> linker tab -> libraries -> "add library"
(这仅提供正确的名称)您可以在编译行中看到这些库的列表:-lwpcap -lpacket
)。不幸的是,这些库只有x32版本... 因此,如果您使用的是x64版本的cygwin(与我一样),则:
cygwin_32
。接下来,在项目的属性中,选择此(cygwin_32
)工具包,并验证您是否提供了WinPcap正确目录/lib
和/include
的路径。尝试建立它。此时,您的项目应该已成功构建。接下来,为了能够运行您的程序,您必须提供cygwin的
/bin
目录中的正确(x32)版本的 cygwin1.dll 。 (只需将其复制到可执行文件的目录中)。 这样获得的可执行文件在sp2的WinXP(x32)上成功进行了测试,当然在Win7 x64上也进行了测试。 (对于测试,我按原样使用了
WpdPack\Examples-pcap\basic_dump\basic_dump.c
存档中的WpdPack_4_1_2.zip
)。希望这对某人有帮助。