Windows下GCC编译含WinSock2的C代码出现未定义引用错误
报错原因
#pragma comment(lib, "ws2_32.lib") 是微软MSVC编译器专属的自动链接指令,MinGW/GCC编译器不支持该语法,因此代码中添加的该配置不会生效,编译阶段没有链接WinSock对应的依赖库,就会抛出这些WinSock API未定义引用的报错。
解决方案
在GCC编译指令的末尾追加WinSock库的链接参数 -lws2_32 即可。需要注意GCC的链接参数必须放在源文件/目标文件的后方,否则会出现链接失效的问题。
假设你的源文件名为 socket_test.c,正确的编译命令示例如下:
gcc socket_test.c -o socket_test.exe -lws2_32
额外注意事项
- 如果后续出现WinSock类型、宏重定义的报错,检查头文件引入顺序,必须保证
WinSock2.h的引入在Windows.h之前,你当前的头文件顺序符合要求无需修改。
内容的提问来源于stack exchange,提问作者lizardcoder
相关产品推荐
相关产品推荐

