VC報錯 fatal error C1083: Cannot open include file: 'pcap.h': No such file or directory
Winpcap是windows平台下的一個專業Winpcap是一個強大的網絡開發庫,可以實現許多功能:獲取可用的網絡適配器;獲取指定適配器信息(比如名稱和描述信息);捕獲指定網卡的數據封包;發送數據封包;過濾捕獲的包以獲取特定包等。
WinPcap由兩部分組成:
1. 驅動程序: 擴展操作系統功能提供低層次的網絡訪問
2. 動態鏈接庫:運行在Win32平台上的應用程序可以非常方便地訪問網絡低層次的數據。
Winpcap的安裝使用方法
1.下載安裝包,開發包
http://www.winpcap.org/install/default.htm下載winpcap的安裝包,
http://www.winpcap.org/devel.htm下載winpcap的開發包(WinPcap SDK)。
2.執行安裝包,這樣你的機子就能運行winpcap程序了。
3.解壓開發包,解壓后除了一些文檔、example和demo,要用到的就是include和Lib文件夾;
在VC6.0的Tools-->Option-->Directories的Include fils 和library files加入winpcap的include和lib目錄。
4.在Link選項卡加入wpcap.lib ws2_32.lib Packet.lib
5.在預定義宏添加WPCAP,HAVE_REMOTE或直接在pcap.h文件中加入
#define WPCAP
#define HAVE_REMOTE
6.開始編寫wpcap程序。
————————————————————————————————————————————
ReBuild All:
報錯如下:
error C2144: syntax error : missing ';' before type 'unsigned int'
定位在_W64這一行
#ifdef _WIN64 typedef unsigned __int64 uintptr_t; #else typedef _W64 unsigned int uintptr_t; #endif #define _UINTPTR_T_DEFINED #endif #ifndef _INTPTR_T_DEFINED #ifdef _WIN64 typedef __int64 intptr_t; #else typedef _W64 int intptr_t; #endif #define _INTPTR_T_DEFINED #endif
原因是vc6.0並不完美支持c++99標准(VC6的PSDK版本低,不支持W64),在64位cpu中編譯會有問題,將winpcap開發包換到4.0.1版本或者其他早期版本及以下錯誤消失
當然你也可以使用VS2005、VS2008、VS2010等,可以跟進高版本的WinCap。
之前嘗試 “去掉_W64” 或者 “在 pcap.h中#define _W64” 沒能解決問題。
------------------------------------------------------------------------------------------------------------------------------
winpcap開發環境需要是windows操作系統,而且必須安裝winpcap驅動才可以調試您的程序。