c++ - 从 C++14 切换到 C++11 时修复的对 boost::system::detail::system_category_instance 的 undefined reference

标签 c++ c++11 boost c++14 linker-errors

我正在尝试构建使用 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++14 标志切换为 -std=c++11 时,错误消失。我从这个answer得到了这个想法.我不知道为什么会修复它。现在在我的项目中,我不能使用 -std=c++11 标志而不是 -std=c++14 标志。

最佳答案

您必须重新编译指定 cxxstd=14 的 boost。

关于c++ - 从 C++14 切换到 C++11 时修复的对 boost::system::detail::system_category_instance 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52516249/

相关文章:

C++ 错误:[ 二进制表达式的操作数无效 ('std::map<int, std::function<void ()>, std::less<int>...]

c++ - 将字符串转换为变量名或变量类型

c++ - 传递的STL容器会生成拷贝吗?

Qt 应用程序中的 c++ boost::thread() - 错误:函数参数太多

c++ - 使用 boost::spirit::qi 重新合成中间值

c++ - 在整个应用程序中重用接口(interface)

c++ - 使用 SFINAE 时如何避免触发 static_assert?

c++ - 是否可以在不使用 decltype 的情况下推断先前定义的外部变量的类型

c++ - 对嵌套范围内经常重复出现的变量类型使用相同的名称

c++ - Boost Spirit : Error C2664, 无法将 'const boost::phoenix::actor<Eval>' 转换为 'char'