`
shinepengwei
  • 浏览: 44290 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

vs2008中安装配置winpcap及相关错误解析

阅读更多

 

说明:vs08在安装的时候提供一些默认的.h文件,比如stodio.h,就是在includ目录下的文件,我不知道叫什么,本文暂且中叫vs源文件。

网上找到的步骤:

1.安装WinPcap_4_0_2.exe,即可以抓包的驱动程序
2。下载winpcap开发包WpdPack_4_0_2.zip,里面有关开发相关的函数库以及例子
3. 打开.net平台,设置环境目录;在菜单:工具->选项;弹出的选项窗体左边点击:项目和解决方案->VC++目录;在右边:“显示以下内容的目录”标签下面的 下拉框中找到“包含文件”,然后对应到第二步下载开发包的Include目录;在同一下拉框中找到“库文件”,然后对应到第二步下载开发包的lib目录;
4. 设置编译条件;在项目属性页中:配置属性->C/C++->预处理器->预处理器定义,增加;WPCAP;HAVE_REMOTE;每 一个预定义符用";"隔开;在项目属性页中:配置属性->链接器->命令行->附加选项对应的文本框中增加:“wpcap.lib ws2_32.lib”;


 
我在调试时出现了两个错误:
1.fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory
2.error C3163: '_vsnprintf': attributes inconsistent with previous declaration
错误原因及我的解决过程
总的来说,应该就是因为在选择新建一个project时候,我们大部分会选择Empty Project。这个是在VC6.0没问题的,但是在vs2008如果选择这个的时候,vs会认为这不是一个WIN32程序,也就是没有预定义WIN32所以在pcap.h代码中:
#if defined(WIN32)
  #include <pcap-stdinc.h>
#elif defined(MSDOS)
  #include <sys/types.h>
  #include <sys/socket.h>  /* u_int, u_char etc. */
#else /* UN*X */
 #include <sys/types.h>
 #include <sys/time.h>
#endif /* WIN32/MSDOS/UN*X */
在Empty Project中没有定义WIN32,因此默认为UNIX环境,然后会出现错误1。
这个是比较容易发现的一个错误,网上有人说强行修改,如果强行修改的话表面上可以解决错误1,但是在一定条件下(比如用到了某个变量类型)仍然会出现错误2.
网上有错误2的解决方案(http://blog.163.com/cp7618@yeah/blog/static/702347772011217102525289/
也是强行修改vs源文件解决问题。
我没找到这个解决方案要修改的代码段,但是我觉得修改stdio.h等头文件不是一个好的方法。
于是我试图自己定义了Win32,但是仍然是修改库文件,而且也会出现错误。
查资料突然看到在创建project时,我们可以选择Win32环境下的project。试了一下,问题解决,并且不需要修改任何vs源文件。

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics