我有这个文件
#include <boost/program_options.hpp>
namespace po = boost::program_options;
#include <iostream>
using namespace std;
int main(int ac, char* av[])
{
try {
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
;
}
catch(exception& e) {
cerr << "error: " << e.what() << "\n";
return 1;
}
catch(...) {
cerr << "Exception of unknown type!\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我想尝试这样编译:
g ++ -I/usr/include/boost/-I/usr/include/boost/program_options main.cpp -L/usr/lib/x86_64-linux-gnu/-lboost_program_options
而且我收到了这个
未定义引用`boost :: program_options :: options_description :: options_description(std :: __ cxx11 :: basic_string,std :: allocator> const&,unsigned int,unsigned int)'
我不知道为什么它失败了,库就在那里,头文件也是.出了什么问题?我正在使用boost 1.55.0
administrator@administrator-VirtualBox:~/l/b$ sudo updatedb
administrator@administrator-VirtualBox:~/l/b$ locate libboost_program_options
/usr/lib/x86_64-linux-gnu/libboost_program_options.a
/usr/lib/x86_64-linux-gnu/libboost_program_options.so
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.55.0
Run Code Online (Sandbox Code Playgroud)
看起来boost是用前C++ 11 std::basic_string编译的,而你的代码是用C++ 11编译的std::basic_string.
尝试使用-D_GLIBCXX_USE_CXX11_ABI=0编译器命令行选项重新编译代码.有关更多详细信息,请参阅GCC5和C++ 11 ABI:
在大多数情况下,当需要这个标志时很明显,因为链接器的错误抱怨未解决的符号涉及
__cxx11.
| 归档时间: |
|
| 查看次数: |
2203 次 |
| 最近记录: |