【问题标题】:undefined reference to boost::filesystem::path_traits::convert对 boost::filesystem::path_traits::convert 的未定义引用
【发布时间】:2016-09-13 17:22:40
【问题描述】:

我正在尝试使用cmake 编译程序,但看到以下链接器错误:

/home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so: 未定义的引用 boost::filesystem::path_traits::convert(wchar_t const*, wchar_t const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::codecvt<wchar_t, char, __mbstate_t> const&)' /home/quant/bin/boost_1_61_0/stage/lib/libboost_log.so: undefined reference to boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::__cxx11::basic_string, std::allocator >&)'

ninja 生成的链接器命令如下所示:

g++ -pthread -DBOOST_ALL_DYN_LINK
实用程序/test/CMakeFiles/utilityTest.dir/loadCSVTests.cpp.o 实用程序/test/CMakeFiles/utilityTest.dir/main.cpp.o 实用程序/test/CMakeFiles/utilityTest.dir/randomDeviceTests.cpp.o -o 实用程序/测试/实用程序测试 -rdynamic /home/quant/bin/boost_1_61_0/stage/lib/libboost_thread.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_program_options.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_serialization.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_unit_test_framework.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_system.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_log.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_filesystem.so 实用程序/lib/libutilityLib.a 实用程序/testLib/libutilityTestLib.a 实用程序/lib/libilityLib.a /home/quant/bin/boost_1_61_0/stage/lib/libboost_thread.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_program_options.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_serialization.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_unit_test_framework.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_system.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_log.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so /home/quant/bin/boost_1_61_0/stage/lib/libboost_filesystem.so -Wl,-rpath,/home/quant/bin/boost_1_61_0/stage/lib

如您所见,我正在链接 boost_filesystemboost_system,因此这与 this SO post 上引用的问题不同(以及许多其他人都喜欢它)。

我使用的是boost 1.61,它是用gcc 5.3 编译的(与我编译程序时使用的编译器相同)。

我做错了什么?

【问题讨论】:

    标签: c++ boost


    【解决方案1】:

    我遇到了类似的问题,这可能是因为从 gcc 5.1 引入的新 ABI。

    https://github.com/openframeworks/openFrameworks/issues/4203

    我通过将“add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)”添加到 CMakeLists.txt 来修复我的问题

    【讨论】:

    • 非常感谢!这绝对有帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 2016-05-02
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2019-07-05
    相关资源
    最近更新 更多