winsock.h与winsock2.h出现重定义或不同的链接
经常遇到编译socket程序的时候生成几百个错误 以下是出错后的错误信息:
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : warning C4005: “AF_IPX”: 宏重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“AF_IPX”的前一个定义
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : warning C4005: “AF_MAX”: 宏重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“AF_MAX”的前一个定义
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : warning C4005: “SO_DONTLINGER”: 宏重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“SO_DONTLINGER”的前一个定义
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C2011: “sockaddr”: “struct”类型重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“sockaddr”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C2143: 语法错误 : 缺少“}”(在“常量”的前面)
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C2143: 语法错误 : 缺少“;”(在“常量”的前面)
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C2059: 语法错误 : “常量”
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : error C2011: “sockaddr_in”: “struct”类型重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“sockaddr_in”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2011: “fd_set”: “struct”类型重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“fd_set”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : warning C4005: “FD_SET”: 宏重定义
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“FD_SET”的前一个定义
...(太多了 不贴了)
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSASetLastError”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAGetLastError”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAGetLastError”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAIsBlocking”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAIsBlocking”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAUnhookBlockingHook”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAUnhookBlockingHook”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSASetBlockingHook”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSASetBlockingHook”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSACancelBlockingCall”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSACancelBlockingCall”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAAsyncGetServByName”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAAsyncGetServByName”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAAsyncGetServByPort”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAAsyncGetServByPort”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAAsyncGetProtoByName”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAAsyncGetProtoByName”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAAsyncGetProtoByNumber”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAAsyncGetProtoByNumber”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAAsyncGetHostByName”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAAsyncGetHostByName”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSAAsyncGetHostByAddr”: 重定义;不同的链接
> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“WSAAsyncGetHostByAddr”的声明
>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h() : error C2375: “WSACancelAsyncRequest”: 重定义;不同的链接
原因分析]
主要原因是因为<Windows.h>中包含了<Winsock.h>头文件,由于其版本的不同
解决方案一: 添加预编译头
项目属性 ——> C/C++ ———> 预处理器 -------> 预处理器定义
增加如下定义
WIN32_LEAN_AND_MEAN

解决方案二:
在编译不过的头文件前面增加
#include <Winsock2.h>
特别是用到了<windows.h>
https://blog.csdn.net/starelegant/article/details/72460728
winsock.h与winsock2.h出现重定义或不同的链接的更多相关文章
- 【VS开发】winsock 错误多 windows.h和winsock2.h的顺序
Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误.诸如: c:\program files ...
- 解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载
解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h( ...
- VS2013使用winsock.h和winsock2.h发生冲突后的终极解决方法
问题:彻底无语了,不小心某个文件包含了windows.h头文件,而windows.h文件里面包含着winsock.h文件, 如果你下次使用winsock2.h文件时,位置不对,然后编译器会给你一大堆重 ...
- windows.h和winsock2.h包含顺序问题(转)
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...
- windows.h和WinSock2.h出现重定义API
有两种常用的解决方法:1.把WinSock2.h写在windows.h之前 2.使用宏定义#define WIN32_LEAN_AND_MEAN
- windows.h与winsock2.h的包含顺序
#define WIN32_LEAN_AND_MEAN #include <windows.h>
- 编译错误:warning C4005]ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义 winsock.h(460) : 参见“AF_IPX”的前一个定义
[问题] ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义: winsock2.h(460) : 参见“AF_IPX”的前一个定义 [原因] windows.h头 ...
- sockaddr struct 类型重定义
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...
- “sockaddr”: “struct”类型重定义的错误的解决办法《转》
原帖地址:https://blog.csdn.net/clever101/article/details/100163301 windows.h和winsock2.h存在有类型重定义,往往体现在VC程 ...
随机推荐
- Java之基于S2SH与手机数据交互(一)
在前两篇博客,介绍了在eclipse上搭建SSH,可是好多小伙伴反映.看了偶写滴博客.跟着搭建还是错误百出,唉! 事实上不经历错误怎么能不见红线啊!于是我在上篇博客补充了他们的错误,还在被错误困扰的童 ...
- SharePoint 中时间轴 Timeline的实现
客户需要在OA中实现每日动态功能,能够记录每一位员工的每天的工作动态,我很快想到了时间轴,因为时间轴能很直观的现实员工每一刻的动态.就像Facebook的Timeline效果(点击查看). 尝试着搜索 ...
- PMD-Java 代码检查工具对 error 和 warning 的配置
PMD是一款优秀的Java程序代码检查工具.该它可以检查Java代码中是否含有未使用的变量.是否含有空的抓取块.是否含有不必要的对象等. 但在使用过程中,你会项目中发现存在大量的 PMD 插件报出的 ...
- 记一次常规的Mysql数据库访问的时间分析
背景:记一次常规的数据访问的时间分析(插入操作) 1. TCP三次握手 SYN ---> <--- SYN,ACK ACK ---> 花费时间: 386.718-385.784=0. ...
- Java 利用 poi 生成 Excel文件的通用例子
在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 生 ...
- CommonView for wifi抓包破解WPA无线网络
运行环境:win8 64位+intel 5100n网卡 步骤1:下载CommonView完全破解版,非破解版只有跑10分钟 http://www.nlver.cn/soft/7305.html 步骤2 ...
- Node.js使用rabbitMQ(一)
目前使用的开发环境主要还是win,所以也只是介绍在win下的rabbitMQ的使用. 一.安装rabbitMQ(Installing on Windows) 关于安装地址,参见:Installing ...
- databus编译:Could not resolve all dependencies for configuration ':databus2-relay:databus2-event-producer-mock:compile
FAILURE: Build failed with an exception. * What went wrong: Could not resolve all dependencies for c ...
- Elastalert 监控
1.logstash 做监控的优劣 适合match-then-alert 的方式 logstash-filter-metric logstash-input-http_poller 无状态.进程间数据 ...
- [svc]arpping链路层检测
arping命令,测试链路层是否同 参考 yum install iputils -y arping - send ARP REQUEST to a neighbour host -b:用于发送以太网 ...