使用mingw-w64

问题描述 投票:0回答:0

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

开发环境:

windows10

Mingw-W6414.2
DrogonFramework

海尼迪斯库(conan2安装) Drogon和Hiredis都建立了静态lib。

这里是我的设置和我到目前为止所采取的步骤的摘要:

verified Hiredis汇编:使用Mingw毫无问题地编辑了Hiredis示例代码,表明可以在我的环境中正确构建Hiredis。

使Drogon的部分与Hiredis无关,建造成功。

阐释链接:确保在我的cmake配置中明确链接WS2_32库:
  • target_link_libraries(MyApp PRIVATE ws2_32)
  • 检查Windows API版本宏:定义_WIN32_WINNT宏,以确保与所需的Windows API函数的兼容性:

  • add_definitions(-D_WIN32_WINNT=0x0601) # Windows 7 or later

    verified符号的存在:使用NM命令检查LIBWS2_32.a库,并确认存在Gai_strerrora和Wsapoll符号。
尽管如此,链接器错误仍然存在。我对这个错误不了解。 我正在寻求有关如何解决这些链接器错误的指导。有没有人面临类似问题或可以提供对潜在解决方案的见解?任何建议或建议将不胜感激。
提前感谢您的帮助!
  • Drogon项目取决于Hiredis,而Hiredis反过来依赖于Windows插座库(WS2_32)。
作为构建的一部分,有一个可执行的示例,
drogon_ctrl
演示了drogon的用法。
    在drogon_ctrl的camkelist.txt中,添加WS2_32是无法使用的。
  • target_link_libraries(drogon_ctrl PRIVATE ws2_32)
  • 我试图修改hirefisfind.camke,然后再解决。
if(MINGW) target_link_libraries(Hiredis_lib INTERFACE ws2_32) endif()

我不是很精通CMake。我想了解这种行为

c linker-errors mingw-w64 hiredis drogon-framework
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.