Я следовал за учебником лога здесь
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» или «так»). В противном случае это
Предполагается, что библиотека построена в статическом режиме. Этот макрос должен быть
определено или не определено для всех единиц перевода пользователя
приложение, которое использует ведение журнала. Этот макрос может помочь с автоматической связью
на платформах, которые его поддерживают.
Итак, мой вопрос: зачем мне нужен #define BOOST_LOG_DYN_LINK для компиляции?
#define BOOST_LOG_DYN_LINK
заставит все библиотеки, которые имеют отдельный собственный источник, связываться как библиотеки DLL вместо статических библиотек.
Ref: \boost_1_xx_0\boost\config\user.hpp
для деталей
Чтобы настроить boost, используйте заголовок конфигурации пользователя <boost/config/user.hpp>
Других решений пока нет …