Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1465448
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: Windows平台

2014-03-17 14:01:02

1. 版本区别
winsock2.h 版本2.0
winsock.h 版本1.1
说白了就是winsock2.h是winsock.h的升级版,用来替换winsock.h

2. 重复定义

因为是两个不同的版本,因此有非常多相同的定义
解决方法:

1)windows.h在winsock2.h的前面
**该办法影响其他库文件

  1. #define WIN32_LEAN_AND_MEAN //关键
  2.     #include <windows.h>
  3.     #include <winsock2.h>
  4.     #pragma comment(lib, "ws2_32.lib")
2)windows.h在winsock2.h的前面,手动定义_WINSOCKAPI_
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h
  1. #pragma push_macro("_WINSOCKAPI_")
  2. #ifndef _WINSOCKAPI_
  3. #define _WINSOCKAPI_
  4. #endif

  5. #include <windows.h>

  6. #pragma pop_macro("_WINSOCKAPI_")
3)windows.h在winsock2.h的后面
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h

  1. #include <winsock2.h>
  2.     #include <windows.h>
  3.     #pragma comment(lib, "ws2_32.lib")





阅读(12384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~