0
我正在接近这套库,因为我需要为我的大学考试创建一个个人项目,并且我想用网络功能做一些事情。我已经有了一本关于这个特定库的书,但现在我无法在我的项目中链接这本书(我的书只解释了如何在Linux上与GCC链接,但我在Windows 10上使用MinGW将CLion联合起来)。 当我编译一个简单的空项目是这样的:在CLion中链接Boost.Asio时出现Static_initialization_and_distruction错误
#include <boost/asio.h>
int main (int argc, char ** argv) {
return 0;
}
我得到这个令人印象深刻的错误:
CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `ZN5boost4asio5error19get_system_categoryEv':
C:/boost_1_63_0/boost/asio/error.hpp:230: undefined reference to `boost::system::system_category()'
CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `ZN5boost4asio6detail17winsock_init_base7startupERNS2_4dataEhh':
C:/boost_1_63_0/boost/asio/detail/impl/winsock_init.ipp:39: undefined reference to `[email protected]'
CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `ZN5boost4asio6detail17winsock_init_base7cleanupERNS2_4dataE':
C:/boost_1_63_0/boost/asio/detail/impl/winsock_init.ipp:56: undefined reference to `[email protected]'
collect2.exe: error: ld returned 1 exit status
CMakeFiles\Hello.dir\build.make:96: recipe for target 'Hello.exe' failed
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/Hello.dir/all' failed
mingw32-make.exe[3]: *** [Hello.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/Hello.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/Hello.dir/rule] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/Hello.dir/rule' failed
mingw32-make.exe: *** [Hello] Error 2
Makefile:117: recipe for target 'Hello' failed
,这里是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(Hello)
set(CMAKE_CXX_STANDARD 14)
set(SRC_FILES main.cpp)
include_directories(C:\\boost_1_63_0)
link_directories(C:\\boost_1_63_0)
find_package(BOOST 1.63.0 REQUIRED)
add_executable(Hello ${SRC_FILES})
我怎样才能解决这个问题? 在此先感谢!
编辑
我更新了我的CMakeLists.txt,因为它遵循:
cmake_minimum_required(VERSION 3.8.0)
project(Hello)
set(CMAKE_CXX_STANDARD 14)
set(SRC_FILES main.cpp)
set(BOOST_ROOT C:\\boost_1_63_0)
find_package(Boost 1.63.0 COMPONENTS system REQUIRED)
find_library(WS2_32_LIBRARY ws2_32)
link_directories(C:\\boost_1_63_0)
link_libraries(${BOOST_LIBRARIES})
add_executable(Hello ${SRC_FILES})
target_link_libraries(Hello ${WS2_32_LIBRARY} ${BOOST_LIBRARIES})
现在我没有得到任何错误,反正当我告诉我的程序:
#include <boost/asio.hpp>
提升变红,静态分析器告诉我“无法找到提升”。 现在的问题在哪里? 谢谢!
@Baffo拉斯塔IUUC,现在你的程序编译和运行,但你的IDE不承认包括什么呢?我相信你应该配置IDE并且告诉它头文件驻留的地方。如果您需要帮助,请发布其他问题并正确标记。 –
不,我的程序甚至没有编译,它说构建“无法找到提升”。无论如何,CMake调试告诉我它可以找到升压1.63.0和升压::系统... –
@Baffo rasta也许你没有建立升压为明,对吗? –