VC6.0设置winpcap

winpcap提供两个不同级别的编程接口:一个基于libpcap的wpcap.dll,另一个是较为底层的packet.dll,对于一般的要与Unix平台的Libpcap兼容的开发者来说,使用wpcap.dll是当然的选择。

初次编译时会遇到问题:“无法打开pcap.h”。解决方法:

1.安装winpcap驱动。

2.打开VC,工具-》选项-》目录,将winpcap的include,lib目录添加进VC6.0的环境变量;

3.针对每个项目,在project-》settings,选择“C/C++”,在“preprocessor definitions”的输入框里添加“WPCAP”,选择“LINK”,在“object/library modules”的输入框里添加“wpcap.lib Packet.lib”.

4.最好是winpcap3.1.


在使用winpcap开发包或libnet开发包的时候都要包含一个packet32.h的头文件但是一包含这个头文件就会有下面的未定义问题:
e:\biye2\wpdpack_3_1\wpdpack\include\packet32.h(208)   :   error   C2079:   'IPAddress '   uses   undefined   struct   'sockaddr_storage '
e:\biye2\wpdpack_3_1\wpdpack\include\packet32.h(209)   :   error   C2079:   'SubnetMask '   uses   undefined   struct   'sockaddr_storage '
e:\biye2\wpdpack_3_1\wpdpack\include\packet32.h(210)   :   error   C2079:   'Broadcast '   uses   undefined   struct   'sockaddr_storage '

packet32.h中是这样定义的:

typedef   struct   npf_if_addr   {
struct   sockaddr_storage   IPAddress; /// <   IP   address.
struct   sockaddr_storage   SubnetMask; /// <   Netmask   for   that   address.
struct   sockaddr_storage   Broadcast; /// <   Broadcast   address.
}npf_if_addr;

IP版本的原因,VC6的winsock2.h   太老了只有sockaddr,用2003就没有这个问题,另外的解决方法:struct   sockaddr_storage 改为struct   sockaddr   就行了


另外,OID_802_3_CURRENT_ADDRESS 0x01010102 未定义,在   ntddndis.h   中定义的.


你可能感兴趣的:(VC6.0设置winpcap)