WINSOCK.H WINSOCK2.H的区别及函数重复定义的解决方法
2015-10-29 14:18
393 查看
1. 版本区别
winsock2.h 版本2.0
winsock.h 版本1.1
说白了就是winsock2.h是winsock.h的升级版,用来替换winsock.h
2. 重复定义
因为是两个不同的版本,因此有非常多相同的定义
解决方法:
1)windows.h在winsock2.h的前面
**该办法影响其他库文件
#define WIN32_LEAN_AND_MEAN //关键
#include <windows.h>
#include <winsock2.h>
#pragma comment(lib,
"ws2_32.lib")
2)windows.h在winsock2.h的前面,手动定义_WINSOCKAPI_
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h
#pragma push_macro("_WINSOCKAPI_")
#ifndef _WINSOCKAPI_
#define _WINSOCKAPI_
#endif
#include <windows.h>
#pragma pop_macro("_WINSOCKAPI_")
3)windows.h在winsock2.h的后面
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h
#include
<winsock2.h>
#include <windows.h>
#pragma comment(lib,
"ws2_32.lib")
winsock2.h 版本2.0
winsock.h 版本1.1
说白了就是winsock2.h是winsock.h的升级版,用来替换winsock.h
2. 重复定义
因为是两个不同的版本,因此有非常多相同的定义
解决方法:
1)windows.h在winsock2.h的前面
**该办法影响其他库文件
#define WIN32_LEAN_AND_MEAN //关键
#include <windows.h>
#include <winsock2.h>
#pragma comment(lib,
"ws2_32.lib")
2)windows.h在winsock2.h的前面,手动定义_WINSOCKAPI_
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h
#pragma push_macro("_WINSOCKAPI_")
#ifndef _WINSOCKAPI_
#define _WINSOCKAPI_
#endif
#include <windows.h>
#pragma pop_macro("_WINSOCKAPI_")
3)windows.h在winsock2.h的后面
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h
#include
<winsock2.h>
#include <windows.h>
#pragma comment(lib,
"ws2_32.lib")
相关文章推荐
- .net项目发布
- html 表单数据标签
- Mysql效率优化定位较低sql的两种方式
- Android Studio 实用插件整理
- camera sensor ov4689 调试(一)
- android 仿蘑菇街喜欢
- FastDFS原理系列文章
- Android按比例布局之layout_weight和weightSum的使用
- 使用RDRDVTabBarController第三方方法,如何实现中间tab突出显示的效果
- 十张图解释机器学习的基本概念
- linux 里的`反引号
- AD中批量解锁域用户
- python+flask+SAE 微信公共平台开发的小小的demo
- js判断访问终端端
- 【Android Studio学习】
- android--(http协议、显示网络中的图片、https)
- python装饰器
- JS 发送POST
- leetcode 257 : Binary Tree Paths
- Android Studio 简介及导入 jar 包和第三方开源库方法