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
开发环境:
windows10Mingw-W6414.2DrogonFramework
海尼迪斯库(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_ctrl
演示了drogon的用法。
target_link_libraries(drogon_ctrl PRIVATE ws2_32)
if(MINGW)
target_link_libraries(Hiredis_lib INTERFACE ws2_32)
endif()
我不是很精通CMake。我想了解这种行为