2011-09-19 60 views
1

我想在VS2010上构建和运行Boost.Log库。在VS2010上升压日志链接错误

我从他们SVN中的trunk中获取了最新的文件。 我将所有的头文件和源文件拖放到一个win32.exe项目中,设置所有boost的(1.47)include \ lib目录。 使用.mc文件播放了一段时间后,我设法从中生成头文件和.rc文件。

还确保运行时库设置为多线程调试DLL(/ MDd)。

我主要CPP文件是这样的:

#include "stdafx.h" 
#include <boost/log/trivial.hpp> 

int _tmain(int argc, _TCHAR* argv[]){ 
    BOOST_LOG_TRIVIAL(error) << "An error severity message"; } 

一切编译,但后来我得到这个链接错误:

错误LNK1104:无法打开文件“libboost_log_setup-VC100-MT-GD-1_47.lib '

问题产生: 我正在构建一个.exe项目,为什么要查找这个.lib文件?我有来源和所有。 链接器如何知道名称'libboost_log_setup-vc100-mt-gd-1_47'?我在链接选项中找不到任何剩余部分,也没有在源代码中找到它。

我能在这里做什么?

这将是最好的,如果有人能指导我已经建立和工作的Boost.Log的VS2010 .lib。

P.S. 在此之前,我试图从boost.log源文件编译一个.lib文件,并让另一个exe项目使用它。 .lib构建得很好。 但在客户端项目中,我收到了此类错误:

错误LNK2019:无法解析的外部符号“void __cdecl boost :: log_mt_nt5 :: trivial :: aux :: init(void)”(?init @ aux @ trivial @ log_mt_nt5 @ boost @@ YAXXZ)在函数“public:static class boost :: log_mt_nt5 :: sources :: severity_logger_mt__cdecl boost :: log_mt_nt5 :: trivial :: logger :: construct_logger(void)”(?construct_logger @ logger @ trivial @ log_mt_nt5 @ boost @@ SA?AV?$ severity_logger_mt @ W4severity_level @ trivial @ log_mt_nt5 @ boost @@@ sources @ 34 @ XZ)

+0

除此之外,我甚至通过2.0使用了许多项目的boost日志,然后最终搁置了它(不幸的是)。一旦你超越了样本所涵盖的任务,看起来过于设计,文档不足,并且一般都很笨拙。此外,Google日志记录库使用的条件/严重性技巧实际上已被优化得很好; boost.log在确定是否发送到输出之前对整行进行格式化。 – adzm

回答

0

Boost.Log是一个已编译的库;它需要建立。你可以使用bjam来构建它,就像其余的boost一样。

正在搜索的文件名称是它自动链接的结果。检查各种选项。

+0

我可以寻找什么样的选择?我无法找到使用bjam和vs2010构建新手指南。你能推荐一个吗? – Leo

+0

入门指南解释了几乎所有你需要的东西。 http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html#or-build-binaries-from-source只需在boost分发的其余部分添加boost.log文件即可。它应该与其他所有东西一起自动构建它,如果不是的话,你可以在命令行中添加--with-log。要小心使用临时文件和所有构建变体的总体构建过程需要几个hd空间。 – adzm

+0

非常感谢,它的工作。我遵循从“5.3或从源构建二进制文件”开始的方向,并使用b2和--with-log指令构建 – Leo