对boost :: filesystem :: path_traits :: convert的未定义引用

时间:2016-09-13 17:22:41

标签: c++ boost

我正在尝试使用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 ::文件系统:: path_traits ::讯(升压::文件系统:: directory_entry   const&amp;,std :: __ cxx11 :: basic_string,   std :: allocator&gt;&amp;)&#39;

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

  

g ++ -pthread -DBOOST_ALL_DYN_LINK
  实用程序/测试/ CMakeFiles / utilityTest.dir / loadCSVTests.cpp.o   实用程序/测试/ CMakeFiles / utilityTest.dir / main.cpp.o   utility / test / CMakeFiles / utilityTest.dir / randomDeviceTests.cpp.o -o   utility / test / utilityTest -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   utility / lib / libutilityLib.a utility / testLib / libutilityTestLib.a   实用/ LIB / libutilityLib.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,/家庭/定量/ bin中/ boost_1_61_0 /级/ lib中

正如您所看到的,我正在与boost_filesystemboost_system进行关联,因此它与this SO post上引用的问题不同(以及许多其他类似问题)

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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

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

我通过添加&#34; add_definitions(-D_GLIBCXX_USE_CXX11_ABI = 0)&#34;来修复我的。到CMakeLists.txt