gpt4 book ai didi

c++ - -lboost_system 对 cygwin 上对 `boost::system::system_category()' 的 undefined reference 没有帮助

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:59 26 4
gpt4 key购买 nike

这是我的 CMakeLists.txt:

set(CMAKE_VERBOSE_MAKEFILE ON)
cmake_minimum_required(VERSION 3.8)
project(spider)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
add_executable(spider ${SOURCE_FILES})
target_link_libraries(spider ${Boost_LIBRARIES})
target_link_libraries(spider Threads::Threads)
target_link_libraries(spider
${Boost_PROGRAM_OPTIONS_LIBRARIES}
${Boost_FILESYSTEM_LIBRARIES}
${Boost_SYSTEM_LIBRARIES}
)
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lboost_system -DBOOST_SYSTEM_NO_DEPRECATED" )

这是我在 main.cpp 中的包含文件:

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::udp;

我尝试下载并构建 boost,这会导致很多麻烦,所以我决定使用 cygwin 安装程序附带的 boost。我的/include 文件夹中确实有 boost_system 和 boost,所以我不必在我的 Cmakelists.txt 中设置 boost:

enter image description here

问题是如何处理错误:

/usr/include/boost/system/error_code.hpp:322: undefined reference to `boost::system::system_category()'

如您所见,我已经尝试了 -lboost_system-DBOOST_SYSTEM_NO_DEPRECATED,标志被传递给 g++:

/usr/bin/c++.exe -lboost_system -DBOOST_SYSTEM_NO_DEPRECATED -g -Wl,--enable-auto-import CMakeFiles/spider.dir/main.cpp.o -o spider.exe -Wl,--out-implib,libspider.dll.a -Wl,--major-image-version,0,--minor-image-version,0

但这并没有帮助。有什么想法吗?

最佳答案

添加

target_link_libraries(spider boost_system) 

而不是 SET CMAKE_CXX_FLAGS 到 cmake 文件的末尾修复了这个问题,根本原因是标志应该在最后,正如评论者所指出的那样。

关于c++ - -lboost_system 对 cygwin 上对 `boost::system::system_category()' 的 undefined reference 没有帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45652206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com