寻找获得在Windows 7 64位上运行的Winpcap开发包(4.1.2)。 我正在使用Cygwin(4.1.10)编译器在Netbeans IDE中用C / C ++进行编程。 我想直接从UDP数据包中提取一些GPS数据,而不是使用另一个程序,在这里我要经过一个中间步骤,并从文本文件中提取它们。 如果我不能解决这个问题,我会尝试在Ubuntu下,看看我是否可以在那里工作libpcap(即使Windows是首选的,因为我使用的其他设备)。 这里是我在哪里(我的主要资源已经从介绍到WinPcapnetworking库 , 在你的程序中使用WinPcap和在tcpdump.org用pcap编程(注意:我不能发布第三个链接,因为它说我的声誉需要更高)):
通过做所有上述和包括pcap.h头没有额外的代码,我可以编译我的程序。 然而,我一直在引用的安装说明还声明添加以下两个“附加依赖项”: winpcap.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版本… 所以,如果你使用cygwin的x64版本(如我),那么:
cygwin_32
为cygwin_32
。 接下来,在你的项目的属性中选择这个( cygwin_32
)工具包,并验证是否提供WinPcap的正确目录/lib
和/include
的路径。 尝试构建它。 在这一点上,你的项目应该成功建立。 接下来,为了能够运行你的程序,你必须提供cygwin的 /bin
目录下cygwin1.dll的正确版本(x32)。 (只需将其复制到可执行文件的目录)。 这样得到的可执行文件,我成功地在WinXP(x32)与sp2 ,当然在我的Win7 x64测试 。 (对于测试,我使用WpdPack\Examples-pcap\basic_dump\basic_dump.c
从WpdPack_4_1_2.zip
归档,就像那样)。
希望这会对某人有所帮助。