WinPcap编程学习(前期安装测试)
“_vsnprintf”: 属性与以前的声明不一致 【编译错误】
原因:
VC中stdio.h中对_vsnprintf()函数(可变参数函数)的定义与你工程中使用的第三方库中对输出的定义有冲突。WinPcap库中含有的pcap-stdinc.h 文件对该函数重新进行了定义,与标准中定义的有点摩擦。
解决方案:
住思路就是要解决这种冲突,通常有如下几种解决方案:
【1】 修改 pcap-stdin.c文件 将其中的 #define vsnprintf _vsnprintf 宏注释掉。
【2】 调换头文件的位置,先包含stdio.h文件然后才包含第三方的库文件,比如 "pcap.h" 这样先把stdio.h头文件包含进来,则pcap.h当中的stdio.h便包含不进来了。
【构建winpcap编程环境】
【1】 首先要安装winpcap的驱动程序(包含wpcap.dll Packet.dll WanPacket.dll pthreadVC.dll这几个必须的dll文件),因为winpcap程序必须要硬件的支持。类似于endpoint和chariot测试工具。如果你安装了 wireshark抓包工具一般都帮你安装好了winpcap驱动了。
【2】 获取winpcap SDK ,这个可以到WinPcap官方网站上下载,下载地址为:www.WinPcap.org。
【3】 解压到一个目录之后。将include和lib目录包含到你的工程中(tools-》options-》Directory; vs08中:工具->选项->项目和解决方案/项目->VC++目录)
【几个注意点】
【1】 新的版本WinPcap支持远程数据包获取,所以还应当添加一个头文件remote-ext.h ,即#include "remote-ext.h"(记住这条语句要放在#include “pcap.h”之后,否则会出错!) 或者不用添加#include "remote-ext.h".在VC.NET提供的IDE环境中,可以通过执行“项目”菜单中的的“属性”进入该项目的属性配置页,通过选择“配置属性”树中的“C/C++"->预处理哭”选项就增加’WPCAP’和’HAVE_REMOTE’两个标号.(vc6中如下配置:工程-》设置-》c/c++》预处理器 在预处理定义中添加前面说的两个符号。)