You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:33:15