c++ - 来自 Boost.org 的 Boost Log 1.65.0 示例的链接错误

标签 c++ boost boost-log

我试图构建这个 example并出现链接错误:

hekto@ubuntu:~$ g++ -g -Wall -std=c++11 -pthread -DBOOST_LOG_DYN_LINK  -pthread sample.cpp -o sample -lboost_log -lboost_thread -lboost_system
/tmp/cc2EUizv.o: In function `boost::log::v2_mt_posix::basic_formatter<char> boost::log::v2_mt_posix::parse_formatter<char>(char const*)':
/usr/include/boost/log/utility/setup/formatter_parser.hpp:207: undefined reference to `boost::log::v2_mt_posix::basic_formatter<char> boost::log::v2_mt_posix::parse_formatter<char>(char const*, char const*)'
collect2: error: ld returned 1 exit status

如何克服?

最佳答案

根据@Praetorian 的帮助和建议,我正在回答我自己的问题。

Boost Log 依赖于两个库(我以为只有一个):

hekto@ubuntu:~$ ls -l /usr/lib/x86_64-linux-gnu/libboost_log*
-rw-r--r-- 1 root root 3510082 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log.a
-rw-r--r-- 1 root root 2441460 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log_setup.a
lrwxrwxrwx 1 root root      28 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log_setup.so -> libboost_log_setup.so.1.65.1
-rw-r--r-- 1 root root  671944 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log_setup.so.1.65.1
lrwxrwxrwx 1 root root      22 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log.so -> libboost_log.so.1.65.1
-rw-r--r-- 1 root root  905752 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log.so.1.65.1

如果您在 Linux 上编译和链接,则必须在命令行中提供 Boost 库列表。根据对 this 的回答Boost Log 的主要开发人员 (@AndreySemashev) 提出的问题,命令行上的这些库应该如下所示:

-lboost_log_setup -lboost_log

可能提供两个库而不是一个库是有意义的(例如,当您静态链接时),但我找不到任何关于何时应该使用单个库以及何时使用它们的建议。

关于c++ - 来自 Boost.org 的 Boost Log 1.65.0 示例的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073453/

相关文章:

c++ - 错误 : namespace "cv::cuda" has no member "resize"

在 Vulkan 中将可变长度数组发送到 GLSL 的 C++ 语法

c++ - 删除单链表最后一个元素的递归方法?

c++ - 在 boost::posix_time::ptime 和 mongo::Date_t 之间转换

c++ - boost 日志到文件不起作用

c++ - 如何禁用 Boost Log 的自动刷新

c++ - 为什么内置类型对象的溢出会导致异常/未定义的行为?

c++ - 同一系统上的定制和默认 boost 库

c++ - Boost 程序选项语法

boost-log - 如何在 boost log 2.0 中记录编码器的行号?