2

CodeBlocks 12.11 で Boost.Log ライブラリをビルドして実行しようとしています。私はboostとboost.logの経験がなく、それを学びたいので、最初にインストールする必要があります。

ブーストの取り付け

まず、コードブロックを使用してブーストをインストールする方法の手順に従いました

その結果、2 台の異なるコンピューター (どちらも Windows 7 を搭載) で、%mypath%\boost\lib に異なるファイルのリストを取得しました (1 つのコンピューターでは 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...

そのリストはいっぱいですか、それともブーストのインストールでいくつかのライブラリが欠けていましたか? 2 台の異なるコンピューターが同じアクションの異なる結果を返す可能性があるのはなぜですか (リンクから同じ手順を 2 回実行しました)。(わずか 6 つの結果ライブラリを含むコンプには VC2010 がなく、52 のライブラリを含むコンプには VC2010 がありました。それが理由でしょうか?)

boost.log のインストール

次に、52 個のライブラリを備えたマシンで、boost.log のインストール方法の手順に従って、boost.log のインストールを開始しました。

そして、2 つの追加ライブラリを取得しました。

  • 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 ディストリビューションからサンプルを取得しました。

#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.log のコンパイルがいっぱいになったことを確認するにはどうすればよいですか?
  • 共有オブジェクトとしてboost.libをビルドする必要があることを読みましたが、bjamのコマンドruntime-link = sharedにもかかわらず、libsはサブディレクトリ「link-static」にありました。私はそれで何かをする必要がありますか?
  • 表示されたエラーはどうすればよいですか?

ご協力ありがとう御座います。

4

1 に答える 1