提升:; program_options 1.49 - 无法与-lboost_program_options链接

时间:2015-04-10 14:25:50

标签: c++ boost debian raspbian boost-program-options

我尝试第一次使用Boost,所以我认为我从program_options开始。我正在使用运行Debian Wheezy的Raspberry Pi进行开发。我从" apt-get install libboost1.49-all"开始一切似乎安装正确。我可以在/ usr / lib中看到.a和.so库。

/usr/lib/libboost_program_options.a
/usr/lib/libboost_program_options-mt.a -> libboost_program_options.a
/usr/lib/libboost_program_options-mt.so -> libboost_program_options.so.1.49.0
/usr/lib/libboost_program_options.so -> libboost_program_options.so.1.49.0
/usr/lib/libboost_program_options.so.1.49.0

我可以使用

编译一些我找到here的示例源代码
g++ boost_program_options.cpp -c

但我无法得到任何链接。我尝试使用no -l显式指定库路径,除了几页未定义的引用错误之外什么都没有。我尝试了另一个示例代码,并得到了一个编译问题,告诉我我没有使用" g ++ -std = c ++ 0x"但这也不是问题所在。我被卡住了。我也试过了

 g++ -std=c++0x boostme.cpp -o boostme -L/usr/lib -lboost_program_options

此时我只是把头撞到了墙上。在我到目前为止看到的stackoverflow帖子中,我正确地做了一切。我头疼。 ; - )

下面是一些示例错误消息。还在四处寻找。

/tmp/ccTbmurt.o: In function `boost::program_options::error_with_option_name::~error_with_option_name()':
boostme.cpp:(.text._ZN5boost15program_options22error_with_option_nameD2Ev[_ZN5boost15program_options22error_with_option_nameD5Ev]+0x118): undefined reference to `vtable for boost::program_options::error_with_option_name'
/tmp/ccTbmurt.o: In function `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)':
boostme.cpp:(.text._ZN5boost15program_options16validation_errorC2ENS1_6kind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_tERKSsS4_i]+0x30): undefined reference to `boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)'

1 个答案:

答案 0 :(得分:2)

因为该析构函数的签名确实应该

    ~error_with_option_name() throw() {}

我要调查我的水晶球然后说 - 也许 - 你的代码库中可能隐藏着#define throw()或类似的东西。

那,您的包含路径中的头文件可能存在冲突版本,这与链接时找到的库版本不对应

相关问题