c++ - 如何修复 CLion 中对 `__imp_WSACleanup' (Boost.Asio) 的 undefined reference

标签 c++ boost clion

我的 C++ 项目包括 BoostWebSocket++库。我阅读了其他主题,我需要将 -lws2_32 添加到 gcc 命令,但我有 CLion,但我不知道如何修复它。

控制台:

CMakeFiles\WsServer.dir/objects.a(main.cpp.obj): In function `boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
C:/MinGW/include/boost/asio/detail/impl/winsock_init.ipp:39: undefined reference to `__imp_WSAStartup'
CMakeFiles\WsServer.dir/objects.a(main.cpp.obj): In function `boost::asio::detail::winsock_init_base::cleanup(boost::asio::detail::winsock_init_base::data&)':
C:/MinGW/include/boost/asio/detail/impl/winsock_init.ipp:56: undefined reference to `__imp_WSACleanup'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [CMakeFiles\WsServer.dir\build.make:99: WsServer.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:67: CMakeFiles/WsServer.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:79: CMakeFiles/WsServer.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:117: WsServer] Error 2

我该怎么办?

最佳答案

您可以在 CMakeLists.txt 中通过 target_link_libraries 传递 ws2_32,例如:

if(MINGW)
  target_link_libraries(YourTargetName ws2_32)
endif()

关于c++ - 如何修复 CLion 中对 `__imp_WSACleanup' (Boost.Asio) 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38767653/

相关文章:

c++ - STARTTLS 后无法写入 ssl (openssl) 套接字

c++ - 使用命名捕获找出给定正则表达式中命名组的所有名称

c++ - boost::process 写入标准输入

cmake - 如何将 CLion 自定义 CMake 可执行文件设置为随 Homebrew 安装的版本?

c++ - 段错误和指针问题

c++ - 从模板基类继承构造函数而不重复模板参数?

c++ - 来自多个位域的互斥连续范围

c++ - 使用 boost.python 将通用 C++ 库绑定(bind)到 python

c - 如何为 chroot 项目设置 ide

c++ - 对 `` CLion 的 undefined reference