首先,我不喜欢使用c / c++进行编程,因此也许这只是一个基本错误,但我不理解。问题是,我想在更大的应用程序中使用libpcap,但是我什至无法将libary集成到简单的HelloWorld.cpp中。 Atm我正在Windows 64位上使用Eclipse(MinGw编译器),但是如果无法解决我的问题,便不得不切换到Linux。

从tcpdump.org下载“libpcap-1.5.3.tar.gz”,解压缩库的根目录并将其添加到Eclipse(在“Properties / C | C++ Build”下的所有编译器和MinGW Linker中)。
我的代码:

#include <iostream>
#include <pcap.h>
#include <stdio.h>
using namespace std;

int main(int argc, char *argv[]) {
cout << "Hello World!!!" << endl; // prints Hello World!!!
char *dev = argv[1];

printf("Device: %s\n", dev);
return(0);
}

第一个错误:
D:\Tools\MinGW\lib\libpcap/pcap-stdinc.h:49:22: fatal error: bittypes.h: No such file or directory

所以我将第49行从
#include "bittypes.h"


#include <Win32/Include/bittypes.h>

(bittypes.h的实际位置),然后弹出下一个错误:
D:\Tools\MinGW\lib\libpcap/pcap/pcap.h:451:1: error: 'Adapter' does not name a type

“适配器”是在“pcap-int.h”中定义的,因此我将此 header 包含在“pcap.h”中,但是现在我得到了:
D:\Tools\MinGW\lib\libpcap/pcap-int.h:46:22: fatal error: Packet32.h: No such file or directory compilation terminated.

并且此“Packet32.h”不存在...

我不能相信这个流行的库被打破了,那么我的错误在哪里呢?提前致谢!

最佳答案



如果要在Windows上使用libpcap,则需要一个已移植到Windows的libpcap版本。 libpcap源代码无法在Windows上构建;在UNIX上,libpcap可以并且确实使用操作系统中内置的数据包捕获机制,但是在Windows上却没有这样做(一方面,至少Windows的较早版本没有内置数据包捕获机制!) ,因此它也需要一个驱动程序。

libpcap到Windows的一个端口是WinPcap;它包括必要的驱动程序。如果安装WinPcap,然后下载WinPcap developer's pack并安装它,则应该可以配置Eclipse,以便可以使用WinPcap构建程序。

关于c++ - 带有libpcap的C++无法在Windows下编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23495356/

10-12 05:38