1.问题原因
在VS2010中进行UDP或者TCP/IP通信时,如果同时包含了Windows.h和WinSock2.h两个头文件,在编译的时候会出现大量重复定义错误。
2.问题分析
这个问题出现的原因是Windows.h文件中本身包含了Winsock.h头文件,而WinSock2.h是WinSock.h的升级版,两个同时引用的时候出现重复定义问题。
3.问题解决
解决思路就是要让Winsock.h和WinSock2.h两个当中只能用一个进行编译,这样的话解决的方法有:
方法一 不要同时包含Windows.h或者WinSock2.h,这对于一些不需要用到硬件接口的程序可行,但是对于需要用于硬件操作的程序必须包含Windows.h,这时这个方法会失效
方法二 将
WinSock2.h
放在Windows.h
前面,这是一个最方便,最简单的方法。
方法三 添加自定义宏,打开VS2010中的Project的属性,然后C/C++->Preprocessor->Preprocessor Definitions中添加如下宏:
WIN32_LEAN_AND_MEAN