您的位置:首页 > 运维架构

VS2005 winpcap配置(error:can not open include file pcap.h)

2010-12-09 09:30 295 查看
VS2005 winpcap配置(error:can not open include file pcap.h)

从网络上找到一个在VC++6.0环境下运行的抓包程序CapturePacket.exe及源码,而VC++6.0环境我很久没碰过了,于是利用下班时间将其源码运行在VS2005环境下,在VS2005环境下调试程序的时候,出现了一个错误:error:can not open include file pcap.h,接着发挥google的功能,不停地搜索,花了几个小时,问题终于解决。
解决这个错误有以下几个步骤:
1 安装WinPcap_4_0_1.exe可以抓包的驱动程序,WinPcap_4_0_1版本
  2下载WinPcap开发包WpdPack_4_0_1.zip,里面有关开发相关的函数库以及例子
  3 打开VS2005.net平台,设置环境目录:菜单工具->选项->弹出的选项窗体左边点
击->项目和解决方案->VC++目录->在右边->显示以下内容的目录->标签下面的下拉
框找到“包含文件” ->对应到第二步下载开发包的Include目录;在同一下拉框中到“库
文件” ->对应到第二步下载开发包的lib目录;
  4 设置编译条件:在项目属性页中->配置属性->C/C++->预处理器->预处理器定义,增
加;WPCAP;HAVE_REMOTE;每一个预定义符用”;”隔开;在项目属性页中->配置属
性->链接器->命令行->附加选项对应的文本框中增加:“wpcap.lib ws2_32.lib”;
经过这几个步骤,pcap.h的问题解决了,但是出现了新的问题:('time' : cannot convert parameter 1 from 'long *' to 'time_t *' )。继续发挥google的功能,花了一些时间,问题也解决。如下:
VC++6.0里,time_t的定义是:
typedef long time_t; /* time value */
其实也就是long,所以可以通用。

但在VS2005中,不一样了:
如果没有定义_USE_32BIT_TIME_T时
typedef __time64_t time_t; /* time value */
typedef __int64 __time64_t; /* 64-bit time value */
也就是说time_t是64位整型的。

只要在项目属性的"C/C++"中的“预处理定义”中加上_USE_32BIT_TIME_T就可以直接使用long Time;了

当然,最好把你的代码改为:
struct tm* date_tm;
time_t Time;

time(&Time);
date_tm = localtime(&Time);
这样就可以通用了。

程序最终可以调试了,中间没有出现任何error,只有几个warning,而warning是可以忽略的。编译发现没问题了,点击执行程序,意外的问题出现了,弹出一个框框,框框提示说:“无法找到“CapturePacket.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件”,没办法,继续google,在csdn论坛中找到问题的根源,属于环境设置问题,设置如下:
首先打开菜单 项目->项目属性页
1 选择 配置属性->链接器->调试->生成调试信息 改为 是
2 选择 配置属性->C/C++ ->优化->优化 改为 禁用(/Od)

最终,程序执行成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐