ここのブーストログチュートリアルに従いました 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;
}
今では準拠し、うまく機能しました。ブーストサイトでこのマクロについて読みました:
ユーザー コードで定義されている場合、ライブラリはバイナリが動的に読み込まれるライブラリ ("dll" または "so") としてビルドされていると想定します。それ以外の場合、ライブラリは静的モードで構築されていると見なされます。このマクロは、ログを使用するユーザー アプリケーションのすべての翻訳単位に対して、定義されているか定義されていない必要があります。このマクロは、それをサポートするプラットフォームでの自動リンクに役立ちます。
だから私の質問は: なぜ私は #define BOOST_LOG_DYN_LINK をコンパイルする必要があるのですか?