WinPcap编程错误:error C2079: 'IPAddress' uses undefined struct 'sockaddr_storage的解决办法
来源:互联网 发布:个人信用查询软件 编辑:程序博客网 时间:2024/05/22 07:07
出现这个问题的原因一般是由于Winsock的版本和IPv4和IPv6的版本兼容性问题。由于新版的 Winpcap 完全使用了新的 Winsock(支持IPv6),因此这个问题可能影响到每一个已有程序。
以下是新旧两版的 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;
【旧版本】
typedef struct npf_if_addr {
struct sockaddr IPAddress; ///< IP address.
struct sockaddr SubnetMask; ///< Netmask for that address.
struct sockaddr Broadcast; ///< Broadcast address.
}npf_if_addr;
很多人如果仍然使用 Visual C++6 编译程序,那就非常不幸的出现了“error C2079: 'IPAddress' uses undefined struct 'sockaddr_storage”的问题了,这是由于VC6中的 winsock2.h 太旧了,它根本不认得 structsockaddr_storage。因此,winpcap 自带的例程在VC6下编译时会无情地抛出无数错误。事实上,该结构完全可以使用老的sockaddr 代替。手工改动 packet32.h,将 sockaddr_storage 换成sockaddr,这样编译可以顺利通过。但是这种操作的方法有个问题,那就是这样的代码自法支持IPv6。
解决方法:
1.在winpcap库的packet32.h文件里面加入代码(且位于“struct npf_if_addr”定义之前):
#ifndef _SS_PAD1SIZE
struct sockaddr_storage {
u_char sa_len;
u_char sa_family;
u_char padding[128];
};
#endif
2.sockaddr_storage 改成 sockaddr
3.将工程移植到VS2005下进行编译,将工程设置好后,就不会有这种问题(推荐使用这种方法)。
- WinPcap编程错误:error C2079: 'IPAddress' uses undefined struct 'sockaddr_storage的解决办法
- error C2079: 'a' uses undefined class 'A' .
- 超前引用(类的提前声明)出错:error C2079: 'xxx' uses undefined class '***'
- 关于error C2079: 'a' uses undefined class 'A'
- 超前引用问题---error C2079: '' uses undefined class
- 超前引用问题---error C2079: '' uses undefined class
- 超前引用问题---error C2079: '' uses undefined class
- 关于error C2079: 'a' uses undefined class 'A' . 超前引用
- error C2079: * uses undefined class 'CArray<TYPE,ARG_TYPE>'
- 超前引用问题---error C2079: '' uses undefined class
- VC中超前引用有关问题-error C2079: '' uses undefined class
- error C2079: 'lstr' uses undefined class 'std::basic_stringstream<_Elem,_Traits,_Alloc>'
- error C2079: “tv”使用未定义的 struct“timeval”
- Winpcap中sockaddr_storage问题
- error C2079: “pcl::KdTreeFLANN<PointT>::param_radius_”使用未定义的 struct“flann::SearchParams”
- WinPcap编程调试解决办法
- WinPcap编程调试解决办法
- WinPcap编程调试解决办法
- JavaScript 获取客户端计算机硬件及系统信息
- 自己的软件之路!
- Linux下snmptrapd配置记录
- JS中
- Ubuntu8.10安装Firefox3.5
- WinPcap编程错误:error C2079: 'IPAddress' uses undefined struct 'sockaddr_storage的解决办法
- JavaME实现使用数组画出图片
- 使用Linq to Xml创建一个xml文件
- Windows下NET-SNMP安装配置记录
- 每件事都会有结果
- 如何看待别人写的“心得,总结”
- 用InstallShield制作卸载快捷方式
- Linux下SVN安装配置记录
- 人工大脑