使用libpcap的c ++不会在windows下编译

时间:2014-05-06 12:55:39

标签: c++ eclipse windows pcap libpcap

首先,我在c / c ++编程中退出了新的编程,所以也许它只是一个基本的错误,但我不知道。问题是,我想在更大的应用程序中使用libpcap,但我甚至无法将libary集成到一个简单的HelloWorld.cpp中。 Atm我正在使用Eclipse(MinGw编译器)和Windows 64bit,但如果我的问题无法解决,则可以切换到Linux。

已下载" libpcap-1.5.3.tar.gz"从tcpdump.org中,提取并将Libary的根目录添加到Eclipse(在" Properties / C | C ++ Build"到所有编译器和MinGW链接器)。 我的代码:

#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

&#39;适配器&#39;在&#34; pcap-int.h&#34;中定义。所以我把这个标题包含在&#34; pcap.h&#34;但现在我明白了:

D:\Tools\MinGW\lib\libpcap/pcap-int.h:46:22: fatal error: Packet32.h: No such file or directory compilation terminated.

这个&#34; Packet32.h&#34;不存在......

我不能相信这个受欢迎的图书馆被打破了,所以我的错误在哪里?提前谢谢!

2 个答案:

答案 0 :(得分:2)

  

问题是,我想在更大的应用程序中使用libpcap,但我甚至无法将libary集成到一个简单的HelloWorld.cpp中。 Atm我正在使用Eclipse(MinGw Compiler)和Windows

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

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

答案 1 :(得分:-2)

libpcap-1.5.3.tar.gz是库的包,而不是二进制包。所以你需要建立库;你不能只是将目录添加到Eclipse并期望它能够正常工作。

构建源包的常用方法是将其解压缩到一个目录中,并查找名为READMEINSTALL的文件,这是一个简单的文本文件,其中包含有关如何构建和安装的说明各种机器的包装。通常会有不同平台的多个此类文件。

通常,会运行一个名为configure的脚本来为目标创建一个Makefile;然后运行make来构建代码,并make install将其安装在标准位置,以便其他软件包可以找到它。