2014-05-06 92 views
2

首先,我在c/C++編程中退出了新手,所以也許這只是一個基本錯誤,但我不明白。問題是,我想在一個更大的應用程序中使用libpcap,但是我甚至無法將這個libary集成到一個簡單的HelloWorld.cpp中。 Atm我正在使用Windows(64位)的Eclipse(MinGw編譯器),但如果我的問題無法解決,將會切換到Linux。libpcap的C++不會在windows下編譯

從tcpdump.org下載了「libpcap-1.5.3.tar.gz」,解壓並將Libary的根目錄添加到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」 來定義,所以我包括這頭到 「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「不存在...

我不敢相信這個受歡迎的文庫被打破,所以我的錯誤在哪裏?提前致謝!

+0

您是否嘗試編譯Wireshark源代碼? WS使用libpcap,它可以用VC++編譯。 – harper

+0

@harper確實如此,但PCap可以自行編譯。 – Qix

+0

@ user3608078你的包含路徑是什麼樣的? – Qix

回答

2

The Problem is, I want to use libpcap in a bigger application, but i can't even integrate the libary into a simple HelloWorld.cpp. Atm I'm using Eclipse (MinGw Compiler) with Windows

如果您想在Windows上使用libpcap,您需要一個已移植到Windows的libpcap版本。 libpcap源碼不會在Windows上構建;在UNIX上,libpcap可以並且確實使用內置在操作系統中的數據包捕獲機制,但它在Windows上並不這樣做(一方面,舊版本的Windows至少不包含內置的數據包捕獲機制!),所以它也需要一個驅動程序。

到Windows的libpcap的一個端口是WinPcap;它包含必要的驅動程序。如果您安裝了WinPcap,然後下載WinPcap developer's pack並進行安裝,則應該可以配置Eclipse,以便可以使用WinPcap構建您的程序。

-2

libpcap-1.5.3.tar.gz來源包的庫,而不是一個二進制包。所以你需要建立圖書館;你不能只將目錄添加到Eclipse,並期望它工作。

建立一個源代碼包的常用方法是將它解壓到一個目錄下,尋找一個名爲READMEINSTALL文件,這是一個包含關於如何建立和安裝包,各種機器指令的簡單的文本文件。通常會有多個這樣的文件用於不同的平臺。

通常,將會有一個名爲configure的腳本,用於爲目標創建一個Makefile;那麼你運行make來構建代碼並且make install將它安裝在一個標準的地方,以便其他包可以找到它。

+1

這完全不是OP所要做的。 – Qix