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)
最终,程序执行成功!
从网络上找到一个在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)
最终,程序执行成功!
相关文章推荐
- Microsoft Visual C++ 6.0 (SP6)中 can not open include file "winresrc.h"问题的解决方案
- ghost 还原系统时,遇到error 10010,提示can not open image file
- VS2008 winpcap配置(解决fatal error C1083: Cannot open include file: 'sys/time.h'...
- SYBASE备份报错:Can't open a connection to site 'SYB_BACKUP',see the error log file in the ASE directory
- Error 24 Could not delete file 'e:/debug/vc80.idb'. Make sure that the file is not open by another p
- Why-can-I-rename-or-move-an-open-file-in-Linux-but-not-in-Windows
- 解决foxmail提示“can not open socket WinSock Error:10106”
- dnw for Linux error:Can not open /dev/secbulk0
- mac配置libevet出现bufferevent_openssl.c:66:10: fatal error: 'openssl/bio.h' file not found
- Nginx启动报错: could not open error log file: open() &q
- Starting httpd: (13)Permission denied: httpd: could not open error log file
- Git Bash 配置时 error: could not lock config file Java/jdk1.7.0_71/.gitconfig: Permission denied
- Can not open file with "ios_base::in | ios_base::app"
- Qt:can not open out file
- 关于JNI配置Error: Could not find class file for 'XXX'问题(MAC Andriod Studio)
- Solve error: Cannot open include file: 'X11/Xlocale.h': No such file or directory
- [01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/libmyodbc5.so' : file not found
- python csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
- updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
- 解决 error: 'AFNetworking.h' file not found with <angled> include; use "quotes" instead