寻找获得在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编程(注意:我不能发布第三个链接,因为它说我的声誉需要更高)):
我已经安装了winpcap开发包到C: Users Documents
我已经安装了winpcap DLL(虽然我不太确定为什么这是必须的,因为我所见过的所有文档似乎只使用.lib文件)
对于“Include Directories and Headers”,我把path放到开发者包的winpcap Include文件夹中
对于“预处理器定义”,我添加了HAVE_REMOTE和WPCAP
对于“其他库目录”,我把path从开发包中的winpcap Lib文件夹
通过做所有上述和包括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复制的基本代码:
如果InitialDirectory被设置,OpenFileDialog是否可以自动select具有在FileName中设置的值的文件?
send()总是发送整个缓冲区?
PrincipalContext.ValidateCredentials在XP上始终使用Machine ContextType返回False
如何在Windows上编译OpenSSL?
在Windows上安装PETSc
#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: %sn",errbuf); return(2); } printf("Device: %sn",dev); return(0); }
我得到一个undefined reference to 'pcap_lookupdev'错误。
我也读过,可能Winpcap将只能用于MS Visual Studio的东西,所以我其实不知道这是真的。
对不起,长时间的写作,但如果有人有一些见解或经验,这将不胜感激。
如何避免物理磁盘I / O
有关GCC内联汇编的奇怪错误消息
在具有完全权限控制的Windows 2008 R2中无法加载DLL
在C ++中的pthread_create错误(类中的pthread)
什么是Win编译开关closures#pragma弃用警告?
我也遇到过类似的问题。 今天,我的经验成功了,我找到了解决办法!
(最重要的)。 由于你用cygwin(即GNU Linux)工具链编译你的代码,你需要添加到你的项目直线库: libwpcap.a和libpacket.a从winpcap的开发包: project properties -> linker tab -> libraries -> "add library" (这只是提供了编译行中的库的正确名称,你可以看到: -lwpcap -lpacket )。 不幸的是,这些库只有x32版本…
所以,如果你使用cygwin的x64版本(如我),那么:
您需要下载并安装cygwin的 x32版本。 在安装过程中一定要选择编译器和其他必要的软件包。 然后,在C / C ++标签上的NetBeans属性中,从x32 cygwin中添加工具链,并将其cygwin_32为cygwin_32 。 接下来,在你的项目的属性中选择这个( cygwin_32 )工具包,并验证是否提供WinPcap的正确目录/lib和/include的路径。 尝试构建它。 在这一点上,你的项目应该成功建立。 接下来,为了能够运行你的程序,你必须提供cygwin的 /bin目录下cygwin1.dll的正确版本(x32)。 (只需将其复制到可执行文件的目录)。
这样得到的可执行文件,我成功地在WinXP(x32)与sp2 ,当然在我的Win7 x64测试 。 (对于测试,我使用WpdPackExamples-pcapbasic_dumpbasic_dump.c从WpdPack_4_1_2.zip归档,就像那样)。
希望这会对某人有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。