1

我按照这里的升压日志教程 http://boost-log.sourceforge.net/libs/log/doc/html/index.html

我尝试编译并运行这个示例

//[ example_tutorial_trivial
#include <boost/log/trivial.hpp>

int main(int, char*[])
{
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";

return 0;
}

它无法编译。错误返回为http://pastebin.com/DcLdWGke

然后我编辑我的代码如下:

#define BOOST_LOG_DYN_LINK
//[ example_tutorial_trivial
#include <boost/log/trivial.hpp>

int main(int, char*[])
{
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";

return 0;
}

现在它符合并运行良好。我在 boost 网站上读到了这个宏:

如果在用户代码中定义,该库将假定二进制文件构建为动态加载的库(“dll”或“so”)。否则,假定库是在静态模式下构建的。必须为使用日志记录的用户应用程序的所有翻译单元定义或不定义此宏。这个宏可以帮助在支持它的平台上自动链接。

所以我的问题是:为什么我需要#define BOOST_LOG_DYN_LINK 来编译?

4

1 回答 1

0

#define BOOST_LOG_DYN_LINK

将强制所有具有自己独立源的库链接为 dll 而不是静态库。

参考:\boost_1_xx_0\boost\config\user.hpp详情

要配置 boost,请使用用户配置标头<boost/config/user.hpp>

于 2013-10-08T15:23:26.140 回答