对 boost::system::d etail::system_category_instance 的未定义引用,从

Undefined reference to boost::system::detail::system_category_instance that gets fixed when switching from C++14 to C++11

本文关键字:system 未定义 引用 instance etail category boost      更新时间:2023-10-16

我正在尝试构建使用 boost 1.68.0 的 C++ 应用程序。在尝试使用 cmake 然后 make 构建它时,我收到以下链接错误,

/usr/local/bin/g++   -Wall -Wextra -g3 -std=c++14 -Wl,-rpath=/usr/local/lib -L/usr/local/lib    CMakeFiles/Supervisor.dir/HeartbeatManager.cpp.o CMakeFiles/Supervisor.dir/JobReceiver.cpp.o CMakeFiles/Supervisor.dir/ResultSender.cpp.o CMakeFiles/Supervisor.dir/Supervisor.cpp.o CMakeFiles/Supervisor.dir/Process.cpp.o  -o Supervisor -rdynamic -lpthread -lboost_system-mt 
CMakeFiles/Supervisor.dir/HeartbeatManager.cpp.o: In function `boost::system::system_category()':
/usr/local/include/boost/system/error_code.hpp:473: undefined reference to `boost::system::detail::system_category_instance'

在用-std=c++11切换-std=c++14标志时,错误消失。我从这个答案中得到了这个想法。我不知道为什么可以修复它。现在在我的项目中,我不能使用-std=c++11标志代替-std=c++14标志。

你必须重新编译 boost 指定cxxstd=14.