经常遇到编译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出现重定义或不同的链接的更多相关文章

  1. 【VS开发】winsock 错误多 windows.h和winsock2.h的顺序

    Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误.诸如: c:\program files ...

  2. 解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载

    解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h( ...

  3. VS2013使用winsock.h和winsock2.h发生冲突后的终极解决方法

    问题:彻底无语了,不小心某个文件包含了windows.h头文件,而windows.h文件里面包含着winsock.h文件, 如果你下次使用winsock2.h文件时,位置不对,然后编译器会给你一大堆重 ...

  4. windows.h和winsock2.h包含顺序问题(转)

    windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...

  5. windows.h和WinSock2.h出现重定义API

    有两种常用的解决方法:1.把WinSock2.h写在windows.h之前   2.使用宏定义#define WIN32_LEAN_AND_MEAN

  6. windows.h与winsock2.h的包含顺序

    #define WIN32_LEAN_AND_MEAN #include <windows.h>

  7. 编译错误: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头 ...

  8. sockaddr struct 类型重定义

    windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...

  9. “sockaddr”: “struct”类型重定义的错误的解决办法《转》

    原帖地址:https://blog.csdn.net/clever101/article/details/100163301 windows.h和winsock2.h存在有类型重定义,往往体现在VC程 ...

随机推荐

  1. 基于Android平台的会议室管理系统具体设计说明书

    会议室管理系统具体设计说明书 第一部分  引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...

  2. logstash日志分析的配置和使用(转)

    logstash是一个数据分析软件,主要目的是分析log日志.整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是v ...

  3. Linux 系统结构详解【转】

    Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图1-1所 ...

  4. Processing支持中文显示

    Processing 默认不支持中文,中文显示成框框,我使用的版本是:2.2.1,进行如下设置,并且重启processing就可以支持中文了: 可以看到中文了:

  5. gitlab 迁移、升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5

    gitlab 迁移.升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5 gitlab 数据 ...

  6. destoon入门实例与常见问题

    收集了一些destoon入门实例与常见问题,大家做个参考. 链接如下: destoon忘记后台密码怎么办?destoon找回管理员密码 忘记destoon管理员后台账号密码怎么办?解决方法 desto ...

  7. 腾讯云服务器 离线安装最新稳定版MariaDB 10.2.6

    数据库方面我们一般都是使用mysql,由于前段时间我们切换到了MariaDB后,当然生产环境也要更着变,谁叫oracle是个碧池呢! mariaDB主要有三种安装方式 源码安装,有点繁琐,不推荐 yu ...

  8. mongodb学习比较(数据操作篇)

    1.  批量插入:     以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封 ...

  9. Advanced DataStream API Low-latency Event Time Join

    http://training.data-artisans.com/exercises/eventTimeJoin.html

  10. C++文件读写 打开方式等比较全

    要求:掌握文本文件读写的方法了解二进制文件的读写方法 C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流 //创建一个文本文件并写入信息// ...