安装boost.log(使用代码块12.11 + gcc 4.7.1的Windows 7)

时间:2012-12-25 08:22:01

标签: windows boost install codeblocks boost-log

我正在尝试在CodeBlocks 12.11上构建和运行Boost.Log库。我没有使用boost和boost.log的经验,想要学习它,所以,首先我需要安装它。

安装boost

首先,我按照how to install boost using codeblocks

上的步骤进行操作

结果在两台不同的计算机上(都有Windows 7)我在%mypath%\ boost \ lib中获得了不同的文件列表 (在一台计算机上只有6个文件,另外52个文件)

更大的清单是:

  • libboost_chrono-mgw47-MT-1_52.a
  • libboost_chrono-mgw47-MT-d-1_52.a
  • libboost_date_time-mgw47-MT-1_52.a
  • libboost_date_time-mgw47-MT-d-1_52.a
  • libboost_exception-mgw47-MT-1_52.a
  • libboost_exception-mgw47-MT-d-1_52.a
  • libboost_filesystem-mgw47-MT-1_52.a
  • libboost_filesystem-mgw47-MT-d-1_52.a
  • libboost_graph-mgw47-MT-1_52.a
  • libboost_graph-mgw47-MT-d-1_52.a
  • libboost_iostreams-mgw47-MT-1_52.a
  • libboost_iostreams-mgw47-MT-d-1_52.a
  • libboost_locale-mgw47-MT-1_52.a
  • libboost_locale-mgw47-MT-d-1_52.a
  • libboost_math_c99-mgw47-MT-1_52.a
  • libboost_math_c99-mgw47-MT-d-1_52.a
  • libboost_math_c99f-mgw47-MT-1_52.a
  • libboost_math_c99f-mgw47-MT-d-1_52.a
  • libboost_math_c99l-mgw47-MT-1_52.a
  • libboost_math_c99l-mgw47-MT-d-1_52.a
  • libboost_math_tr1-mgw47-MT-1_52.a
  • libboost_math_tr1-mgw47-MT-d-1_52.a
  • libboost_math_tr1f-mgw47-MT-1_52.a
  • libboost_math_tr1f-mgw47-MT-d-1_52.a
  • libboost_math_tr1l-mgw47-MT-1_52.a
  • libboost_math_tr1l-mgw47-MT-d-1_52.a
  • libboost_prg_exec_monitor-mgw47-MT-1_52.a
  • libboost_prg_exec_monitor-mgw47-MT-d-1_52.a
  • libboost_program_options-mgw47-MT-1_52.a
  • libboost_program_options-mgw47-MT-d-1_52.a
  • libboost_random-mgw47-MT-1_52.a
  • libboost_random-mgw47-MT-d-1_52.a
  • libboost_regex-mgw47-MT-1_52.a
  • libboost_regex-mgw47-MT-d-1_52.a
  • libboost_serialization-mgw47-MT-1_52.a
  • libboost_serialization-mgw47-MT-d-1_52.a
  • libboost_signals-mgw47-MT-1_52.a
  • libboost_signals-mgw47-MT-d-1_52.a
  • libboost_system-mgw47-MT-1_52.a
  • libboost_system-mgw47-MT-d-1_52.a
  • libboost_test_exec_monitor-mgw47-MT-1_52.a
  • libboost_test_exec_monitor-mgw47-MT-d-1_52.a
  • libboost_thread-mgw47-MT-1_52.a
  • libboost_thread-mgw47-MT-d-1_52.a
  • libboost_timer-mgw47-MT-1_52.a
  • libboost_timer-mgw47-MT-d-1_52.a
  • libboost_unit_test_framework-mgw47-MT-1_52.a
  • libboost_unit_test_framework-mgw47-MT-d-1_52.a
  • libboost_wave-mgw47-MT-1_52.a
  • libboost_wave-mgw47-MT-d-1_52.a
  • libboost_wserialization-mgw47-MT-1_52.a
  • libboost_wserialization-mgw47-MT-d-1_52.a

安装了bjam消息:

...failed updating 10 targets...
...skipped 16 targets...
...updated 764 targets...

该列表是否已满,或者我的boost安装错过了一些库? 为什么两台不同的计算机可以给出相同操作的不同结果(我从链接两次执行相同的步骤)? (只有6个结果库没有VC2010,comp有52个库有VC2010,可能是理由吗?)

安装boost.log

然后,在有52个库的机器上,我开始按照how to install boost.log

的步骤安装boost.log

还有两个额外的库:

  • libboost_log_setup-mgw47-mt-1_52.a(大小22733 kb)
  • libboost_log_setup-mgw47-mt-d-1_52.a(尺寸74933 kb)

来自bjam的下一个结果消息:

...failed updating 6 targets...
...skipped 10 targets...
...updated 225 targets...

然后我从boost.log distr。:

中取样
#include <iostream>

//#define BOOST_LOG_DYN_LINK

#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>

#include <boost/log/common.hpp>
#include <boost/log/formatters.hpp>
#include <boost/log/filters.hpp>

#include <boost/log/utility/init/to_file.hpp>
#include <boost/log/utility/init/to_console.hpp>
#include <boost/log/utility/init/common_attributes.hpp>

#include <boost/log/attributes/timer.hpp>

namespace logging = boost::log;
namespace fmt = boost::log::formatters;
namespace flt = boost::log::filters;
namespace sinks = boost::log::sinks;
namespace attrs = boost::log::attributes;
namespace src = boost::log::sources;
namespace keywords = boost::log::keywords;

using boost::shared_ptr;

int main(int argc, char* argv[])
{
    logging::init_log_to_console(std::clog, keywords::format = "%TimeStamp%: %_%");
    logging::add_common_attributes();
    src::logger lg;
    BOOST_LOG(lg) << "Hello, World!";
    return 0;
}

向项目添加了库(以及包含文件的路径): 还有libboost_log_setup-mgw47-mt-d-1_52.a

但在编译时我遇到错误:

obj\Debug\main.o||In function 'ZN5boost10log_mt_nt57sources12basic_loggerIcNS1_6loggerENS1_19single_thread_modelEED2Ev':|
C:\Program Files (x86)\CodeBlocks\include\boost-1_52\boost\log\sources\basic_logger.hpp|88|undefined reference to `boost::log_mt_nt5::basic_attribute_set<char>::~basic_attribute_set()'|

并且不知道如何解决它们。

请解释我(如果可能的话):

  • 我怎么知道我的boost编译/安装已经完成以及该怎么做,如果不是(我确定安装给了我6个库不满,但我不知道该怎么办)?
  • 我怎么知道我的boost.log编译已满?
  • 我读到我必须将boost.lib构建为共享对象,但是libs在子目录“link-static”中,尽管命令runtime-link = shared for bjam。我应该做点什么吗?
  • 我应该怎么处理错误?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我没有看到您在上面应用的列表中有日志库。 未定义的引用意味着链接器在您提供的所有库中找不到任何合适的函数。

听起来好像你错过了构建boost日志库,你也从链接器收到了一条消息,无法找到库。