我在这里按照提升日志教程 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;
}
现在它符合并运作良好。我在增强网站上阅读了关于这个marcro的信息:
如果在用户代码中定义,则库将假定构建了二进制文件 作为动态加载的库(“dll”或“so”)。否则就是 假设库是以静态模式构建的。这个宏一定是 为用户的所有翻译单元定义或未定义 使用记录的应用程序。此宏可以帮助自动链接 在支持它的平台上。
所以我的问题是:为什么我需要#define BOOST_LOG_DYN_LINK进行编译?
答案 0 :(得分:0)
#define BOOST_LOG_DYN_LINK
会强制所有拥有独立源代码的库被链接为dll而不是静态库。
参考:\boost_1_xx_0\boost\config\user.hpp
了解详情
要配置boost,请使用用户配置标头<boost/config/user.hpp>