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驱动才可以调试您的程序。