处理过程中出现两个问题:
一是UDP代码使用的winsock2.h,会导致和其他头文件的windows.h冲突,查了一下发现windows.h里面已经包含了winsock.h.
而winsock.h和winsock2.h里面很多函数和struct的定义都是一样的,所以会有redefine的错误。
解决方法是在project的第一个被编译的头文件里面加上“#define _WINSOCKAPI_”,这样的话编译器编译到windows.h的时候就不会去包含winsock.h了。
第二个问题是UDP封装成lib之后被外部文件调用时发现LNK2019错误。
查了下发现调用UDP什么的,除了包含winsock2.h之外,还要注意加上链接库。
可以直接在该lib的项目属性里面添加,或者也可以在lib项目的相关头文件里面加上:
#pragma comment(lib,"Ws2_32.lib")