【发布时间】:2016-01-02 18:45:46
【问题描述】:
我有一个使用 Boost.Log 的静态库。当我想在一个单独的测试项目中测试这个库的一些功能时,我得到了以下链接器错误:
undefined reference to `boost::log::v2_mt_posix::sources::aux::global_storage::get_or_init(boost::typeindex::stl_type_index, boost::shared_ptr<boost::log::v2_mt_posix::sources::aux::logger_holder_base> (*)())'
undefined reference to `boost::log::v2_mt_posix::sources::aux::throw_odr_violation(boost::typeindex::stl_type_index, boost::typeindex::stl_type_index, boost::log::v2_mt_posix::sources::aux::logger_holder_base const&)'
undefined reference to `boost::log::v2_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::string&, std::locale const&)'
我在配置 Boost.Log 并安装全局记录器的静态库中有一个记录器类。我真的不知道我必须与测试项目链接什么才能成功链接。也许你有想法?
使用 CMake,我将以下库添加到静态库中:
target_link_libraries(RBSLib
boost_system
boost_filesystem
boost_python
boost_date_time
boost_program_options
boost_log
boost_thread
pq
ssl
crypto
boost_regex
pthread
dl
)
以及我的测试项目的以下库:
target_link_libraries(${PROJECT_NAME}
boost_system
boost_date_time
boost_unit_test_framework
tbb
pq
ssl
pthread
${PROJECT_BINARY_DIR}/../rbs/libRBSLib.a
boost_thread
boost_filesystem
boost_program_options
crypto
boost_log
)
【问题讨论】: