未定义的引用`boost :: program_options :: options_description :: m_default_line_length'

Pic*_*hat 25 c++ boost g++ ubuntu-12.04

我正在尝试编译代码,我得到错误

未定义的引用 boost::program_options::options_description::m_default_line_length

我在Ubuntu 12.04中使用g ++.虽然我已经完成了一些C++编程,但我还不熟悉Linux开发环境(之前只使用过IDE).

所以我对这个问题做了基本的搜索,发现了一些链接问题.因为我是新手,所以我不太了解他们.阅读其中一些解决方案让我更加困惑.我的boost库文件夹在/usr/include.一些解决方案说它应该在/usr/lib.但我没有任何提升文件夹.

我需要改变什么?

Nee*_*asu 29

如果您已经从repo安装了boost,那么只需使用即可-lboost_program_options.
如果您在其他库中安装了boost库,则需要指定directoty-L/path/to/lib

在CMake中,您可以指定 set(CMAKE_CXX_FLAGS "-lboost_program_options")

但是使用CMake你应该使用

FIND_PACKAGE(Boost COMPONENTS program_options REQUIRED)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(target ${Boost_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)


Bla*_*cal 6

C++11 标准中的类发生了更改<string>,可能与使用非 C++11 编译器(例如 G++-4.8)编译的 Boost 库版本发生冲突。尝试重新编译 boost 或使用用于编译 Boost 库的 C++ 编译器版本。


ani*_*nio 1

boost 库(以 .so 和 .a 结尾的文件)在哪里?找到这些,然后将其添加到链接命令中:-L/path/to/boost/libs -lname-of-boost-lib

这一定是人们刚开始使用 c++ 时面临的最常见的问题。SO 上可能还有一千个其他未定义的参考问题。只需搜索未定义的参考即可。