如何解决在克利翁未定义的参考`GetAcceptExSockAddrs的'(Boost.Asio的) [英] How to fix undefined reference to `GetAcceptExSockaddrs' (Boost.Asio) in CLion

查看:1322
本文介绍了如何解决在克利翁未定义的参考`GetAcceptExSockAddrs的'(Boost.Asio的)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经包括升压1.61.0。我的C ++项目有<一个href=\"http://stackoverflow.com/questions/38767653/how-to-fix-undefined-reference-to-imp-wsacleanup-boost-asio-in-clion\">similar问题,我加了 target_link_libraries(WsServer WS2_32)和固定它。然后,另一个错误出现了。在code:<一href=\"https://github.com/zaphoyd/websocketpp/blob/master/examples/simple_broadcast_server/simple_broadcast_server.cpp\"相对=nofollow>的WebSocket ++例子:simple_broadcast_server.cpp 。我怎样才能解决这个问题?

控制台:

  CMakeFiles \\ WsServer.dir / objects.a(main.cpp.obj):在功能`提高:: ASIO ::详细:: socket_ops :: complete_iocp_accept(无符号很长很长,无效*,无符号长,SOCKADDR *,无符号长长*,无符号很长很长,提振::系统::错误_ code&安培;):
C:/MinGW/include/boost/asio/detail/impl/socket_ops.ipp:199:未定义的参考`GetAcceptExSockAddrs的
CMakeFiles \\ WsServer.dir / objects.a(main.cpp.obj):在功能`boost::asio::detail::win_iocp_socket_service_base::start_accept_op(boost::asio::detail::win_iocp_socket_service_base::base_implementation_type&,布尔,提振:: ASIO ::详细:: socket_holder和放大器;,INT,INT,INT,无效*,无符号长,提高:: ASIO ::详细:: win_iocp_operation *):
C:/MinGW/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp:495:未定义引用'的AcceptEx
CMakeFiles \\ WsServer.dir / objects.a(main.cpp.obj):在功能`提高:: ASIO ::详细:: win_iocp_socket_service_base :: restart_accept_op(无符号很长很长,提高:: ASIO ::详细:: socket_holder&放大器;, INT,INT,INT,无效*,无符号长,提高:: ASIO ::详细:: win_iocp_operation *):
C:/MinGW/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp:520:未定义引用'的AcceptEx
collect2.exe:错误:LD返回1退出状态
的mingw32-的make.exe [3]:*** [CMakeFiles \\ WsServer.dir \\ build.make:99:WsServer.exe]错误1
的mingw32-的make.exe [2]:*** [CMakeFiles \\ Makefile2:67:CMakeFiles / WsServer.dir /全部]错误2
的mingw32-的make.exe [1]:*** [CMakeFiles \\ Makefile2:79:CMakeFiles / WsServer.dir /规则]错误2
的mingw32-的make.exe:*** [Makefile中:117:WsServer]错误2

的CMakeLists.txt:

  cmake_minimum_required(版本3.5)
项目(WsServer)集(CMAKE_CXX_FLAGS$ {} CMAKE_CXX_FLAGS -std = GNU + 11)集(SOURCE_FILES的src / main.cpp中)include_directories(C:/用户/ Marczak / CPPLibs)
find_package(升压所需的组件文件系统)
include_directories($ {} Boost_INCLUDE_DIRS)
add_executable(WsServer $ {} SOURCE_FILES)
target_link_libraries(WsServer $ {} Boost_LIBRARIES)target_link_libraries(WsServer WS2_32)


解决方案

看来你必须添加 WSOCK32 来链接库,请参阅this帖子。

I have included Boost 1.61.0. My C++ project had similar problem, I added target_link_libraries(WsServer ws2_32) and fixed it. Then, another error appeared. The code: WebSocket++ examples: simple_broadcast_server.cpp . How I can fix it?

Console:

CMakeFiles\WsServer.dir/objects.a(main.cpp.obj): In function `boost::asio::detail::socket_ops::complete_iocp_accept(unsigned long long, void*, unsigned long, sockaddr*, unsigned long long*, unsigned long long, boost::system::error_code&)':
C:/MinGW/include/boost/asio/detail/impl/socket_ops.ipp:199: undefined reference to `GetAcceptExSockaddrs'
CMakeFiles\WsServer.dir/objects.a(main.cpp.obj): In function `boost::asio::detail::win_iocp_socket_service_base::start_accept_op(boost::asio::detail::win_iocp_socket_service_base::base_implementation_type&, bool, boost::asio::detail::socket_holder&, int, int, int, void*, unsigned long, boost::asio::detail::win_iocp_operation*)':
C:/MinGW/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp:495: undefined reference to `AcceptEx'
CMakeFiles\WsServer.dir/objects.a(main.cpp.obj): In function `boost::asio::detail::win_iocp_socket_service_base::restart_accept_op(unsigned long long, boost::asio::detail::socket_holder&, int, int, int, void*, unsigned long, boost::asio::detail::win_iocp_operation*)':
C:/MinGW/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp:520: undefined reference to `AcceptEx'
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:

cmake_minimum_required(VERSION 3.5)
project(WsServer)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

set(SOURCE_FILES src/main.cpp)

include_directories(C:/Users/Marczak/CPPLibs)
find_package(Boost REQUIRED COMPONENTS filesystem)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(WsServer ${SOURCE_FILES})
target_link_libraries(WsServer ${Boost_LIBRARIES})

target_link_libraries(WsServer ws2_32)

解决方案

It seems that you have to add wsock32 to link libraries, see this post.

这篇关于如何解决在克利翁未定义的参考`GetAcceptExSockAddrs的'(Boost.Asio的)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆