【发布时间】:2016-04-09 17:28:17
【问题描述】:
我正在使用 Clion,它使用 MinGW 和 Cmake。当我尝试使用独立的 asio 库时,我得到了
undefined reference to `WSAStartup@8'
undefined reference to `WSASetLastError@4'
undefined reference to `closesocket@4'
...
我相信我必须链接C:/Windows/System32/ws2_32.dll 库。我尝试添加类似-L C:/Windows/System32 -lws2_32:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS} -static -lws2_32")
但这并没有帮助。如何修复这些错误?
【问题讨论】:
-
你不需要
-L C:/Windows/System32因为 mingw 在它的发行版中已经有了这个库。无论如何,mingw 不能链接到.dlls,只能链接到.as(可能还有.libs)。 -
我认为问题在于你把
-lws2_32放在了错误的变量中,它一定是在CMAKE_EXE_LINKER_FLAGS中。 -
@HolyBlackCat 我在哪里可以找到
.lib或.a文件? -
@HolyBlackCat 顺便说一句,我显然在 Windows 机器上
-
很高兴你解决了这个问题。顺便说一句,
lib会自动添加到库名称中。这就是-llibws2_32触发错误的原因。例如,-lcat表示link against libcat.a。
标签: c++ cmake mingw boost-asio clion