写了一个winsock UDP数据传输的类,当合到大的工程里面的时候,出现的首要问题是说winsock.h和winsock2.h里有重定义,还伴随着各种问题。。。发现时因为大工程里有include windows.h文件,而windows.h文件里又include<winsock.h>文件,所以重定义。于是对这个问题搜索了一下,发现有两个解决方法。
一个是说windows.h被包含进来了,位置是:
afxwin.h包含afx.h
afx.h包含afxver_.h
afxver_.h包含afxv_w32.h
afxv_w32.h包含windows.h
但包含windows.h的时候没有包含winsock.h
// Don't include winsock.h #pragma push_macro("_WINSOCKAPI_") #ifndef _WINSOCKAPI_ #define _WINSOCKAPI_ #endif #include <windows.h> #pragma pop_macro("_WINSOCKAPI_")
所以你要使用winsock2的函数就很简单了
#include <winsock2.h>
#pragma comment(lib, "Ws2_32.lib")
第二种是说将windows.h里的winsock换成winsock2就可以,但是这样只是在自己电脑上可以。。不是很好的方法。。。