使用MinGW-w64构建嵌套静态库时出现链接错误
MinGW编译Drogon框架(集成hiredis)时出现未定义符号链接错误
链接阶段出现以下错误:
D:/dev/mingw/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/97083/.conan2/p/b/hiredaa6f1e6e3ba57/p/lib/libhiredis.a(sockcompat.c.obj): in function `win32_gai_strerror': C:/Users/97083/.conan2/p/b/hiredaa6f1e6e3ba57/b/src/sockcompat.c:146:(.text+0x3aa): undefined reference to `gai_strerrorA' D:/dev/mingw/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/97083/.conan2/p/b/hiredaa6f1e6e3ba57/p/lib/libhiredis.a(sockcompat.c.obj): in function `win32_poll': C:/Users/97083/.conan2/p/b/hiredaa6f1e6e3ba57/b/src/sockcompat.c:244:(.text+0x84a): undefined reference to `WSAPoll' collect2.exe: error: ld returned 1 exit status mingw32-make[2]: *** [drogon_ctl\CMakeFiles\drogon_ctl.dir\build.make:780: drogon_ctl/drogon_ctl.exe] Error 1 mingw32-make[1]: *** [CMakeFiles\Makefile2:652: drogon_ctl/CMakeFiles/drogon_ctl.dir/all] Error 2
开发环境
- Windows 10
- MinGW-w64 14.2
- Drogon框架
- 通过conan2安装的静态库版本hiredis(Drogon同样为静态库)
已尝试的排查步骤
- 单独用MinGW编译hiredis示例代码,无异常,确认hiredis可在当前环境正常构建;
- 编译Drogon中不含hiredis的模块,可成功完成;
- 在CMake配置中显式链接ws2_32库:
target_link_libraries(MyApp PRIVATE ws2_32) - 定义
_WIN32_WINNT宏以保证Windows API兼容性:add_definitions(-D_WIN32_WINNT=0x0601) # Windows 7及以上 - 用
nm命令检查libws2_32.a,确认gai_strerrorA和WSAPoll符号均存在。
以上操作均未解决链接错误,求各位提供解决思路或建议。
内容的提问来源于stack exchange,提问作者HanWang
相关产品推荐
相关产品推荐

