编译Boost Logging教程示例代码遇未定义引用错误求助
Boost Log格式化配置引发的链接错误解决
问题详情
在编写Boost Log日志初始化代码时,遇到了链接错误。代码如下:
void init() { logging::add_file_log ( keywords::file_name = "sample_%N.log", keywords::rotation_size = 10 * 1024 * 1024, keywords::time_based_rotation = sinks::file::rotation_at_time_point(0, 0, 0), keywords::format = "[%TimeStamp%]: %Message%" ); logging::core::get()->set_filter ( logging::trivial::severity >= logging::trivial::info ); }
编译时出现如下链接错误:
/local/include/boost/log/utility/setup/formatter_parser.hpp:207: undefined reference to `boost::log::v2s_mt_posix::basic_formatter<char> boost::log::v2s_mt_posix::parse_formatter<char>(char const*, char const*)' collect2: error: ld returned 1 exit status
注释掉keywords::format = "[%TimeStamp%]: %Message%"这一行后,代码可正常构建。尝试添加#include <boost/log/support/date_time.hpp>头文件,并未解决问题。
原因与解决方法
这个错误的核心原因是链接阶段未包含Boost Log的格式化解析库。parse_formatter函数属于boost_log_setup库,而非核心的boost_log库,因此编译时需要同时链接相关依赖库:
GCC编译命令示例
g++ your_source.cpp -o your_program -lboost_log -lboost_log_setup -lpthread
CMake配置示例
find_package(Boost REQUIRED COMPONENTS log log_setup) target_link_libraries(your_target PRIVATE Boost::log Boost::log_setup)
内容的提问来源于stack exchange,提问作者Mike M
相关产品推荐
相关产品推荐

