【问题标题】:linking errors for boost for visual studio linux projectVisual Studio linux项目的boost链接错误
【发布时间】:2019-05-11 16:55:45
【问题描述】:

我在通过 Visual Studio linux 项目编译 asio 代码时遇到问题。我不断收到以下链接错误:

链接对象

1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 :在函数boost::asio::detail::posix_event::posix_event()': 1>/usr/local/include/boost/asio/detail/impl/posix_event.ipp(42): error : undefined reference topthread_condattr_setclock' 1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 : 在函数boost::asio::detail::posix_thread::~posix_thread()': 1>/usr/local/include/boost/asio/detail/impl/posix_thread.ipp(35): error : undefined reference topthread_detach' 1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 : 在函数boost::asio::detail::posix_thread::join()': 1>/usr/local/include/boost/asio/detail/impl/posix_thread.ipp(42): error : undefined reference topthread_join' 1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 : 在函数中 boost::asio::detail::posix_thread::start_thread(boost::asio::detail::posix_thread::func_base*)': 1>/usr/local/include/boost/asio/detail/impl/posix_thread.ipp(60): error : undefined reference topthread_create' 1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 : 在函数中 boost::asio::detail::posix_signal_blocker::posix_signal_blocker()': 1>/usr/local/include/boost/asio/detail/posix_signal_blocker.hpp(43): error : undefined reference topthread_sigmask' 1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 : 在函数中 boost::asio::detail::posix_signal_blocker::~posix_signal_blocker()': 1>/usr/local/include/boost/asio/detail/posix_signal_blocker.hpp(50): error : undefined reference topthread_sigmask' 1>D:\C++\test_beastboost\test_beastboost\obj\x64\Debug\main.o:错误 :在函数std::thread::thread<std::_Bind<void (*(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>))(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&)>>(std::_Bind<void (*(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>))(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&)>&&)': 1>/usr/include/c++/5/thread(137): error : undefined reference topthread_create'1>collect2:错误:ld 返回 1 个退出状态

我已经编译了 boost 1_70,它们位于 usr/local/include/boost 和 usr/local/lib 中。

对于我的链接器,我有以下内容:

-L/usr/local/lib/-lboost_system

我也尝试添加 -lboost_thread 但我仍然使用标准库线程..

有什么建议吗?

我应该在 ubuntu 上重新编译我的 boost 吗?

【问题讨论】:

    标签: linux visual-studio boost-beast


    【解决方案1】:

    如果您使用 cmake 编译您的项目,您可以在您的 CMakeLists.txt 文件中使用以下内容:

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
    
    FIND_PACKAGE( Boost 1.70 COMPONENTS REQUIRED date_time)
    INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )
    
    ADD_EXECUTABLE( exe cpp.cpp )
    
    target_include_directories(exe PRIVATE ${Boost_INCLUDE_DIRS})
    TARGET_LINK_LIBRARIES( exe LINK_PUBLIC ${Boost_LIBRARIES} )
    
    install(TARGETS exe RUNTIME DESTINATION bin)
    

    这至少应该修复总和错误。

    如果您不将 cmake 与 vscode 一起使用,我建议您观看 vector-of-bool

    中的 how to cmake good 播放列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多