winsock.h与winsock2.h冲突解决
Posted zhulinu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winsock.h与winsock2.h冲突解决相关的知识,希望对你有一定的参考价值。
今天把原来的工程由mfc换成了非mfc工程,出现了很多错误,现记录下来,作为备份。
摘要内容为:
>c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\ws2def.h(91) : warning C4005: “AF_IPX”: 宏重定义
1> c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\winsock.h(460) : 参见“AF_IPX”的前一个定义
1>c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\ws2def.h(127) : warning C4005: “AF_MAX”: 宏重定义
1> c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\winsock.h(479) : 参见“AF_MAX”的前一个定义
1>c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\ws2def.h(163) : warning C4005: “SO_DONTLINGER”: 宏重定义
1> c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\winsock.h(402) : 参见“SO_DONTLINGER”的前一个定义
1>c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\ws2def.h(206) : error C2011: “sockaddr”: “struct”类型重定义
1> c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\winsock.h(485) : 参见“sockaddr”的声明
1>c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\ws2def.h(384) : error C2143: 语法错误 : 缺少“”(在“常量”的前面)
1>c:\\program files\\microsoft sdks\\windows\\v6.0a\\include\\ws2def.h(384) : error C2143: 语法错误 : 缺少“;”(在“常量”的前面)
解决办法,本工程采用与编译头编译。
在stdafx.h中添加:
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <winsock2.h>
#include <windows.h>
在targetver.h中修改
#ifndef WINVER // 指定要求的最低平台是 Windows Vista。
#define WINVER 0x0600 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINNT // 指定要求的最低平台是 Windows Vista。
#define _WIN32_WINNT 0x0600 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINDOWS // 指定要求的最低平台是 Windows 98。
#define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。
#endif
#ifndef _WIN32_IE // 指定要求的最低平台是 Internet Explorer 7.0。
#define _WIN32_IE 0x0700 // 将此值更改为相应的值,以适用于 IE 的其他版本。
#endif
然后先编译
stdafx.cpp文件
编译好后在编译其他文件就不会出现此问题了。
以上是关于winsock.h与winsock2.h冲突解决的主要内容,如果未能解决你的问题,请参考以下文章
winsock.h与winsock2.h的区别(同时包含windows.h和winsock2.h报错重定义的问题)
winsock.h与winsock2.h的区别(同时包含windows.h和winsock2.h报错重定义的问题)