BOOST_MESSAGE не определено

Я установил boost_1_54 на окнах при извлечении из SVN, а затем

bootstrap
.\b2

Библиотека QuantLib, зависящая от boost, хорошо компилирует все, кроме одного проекта: test-suite, который использует BOOST_MESSAGE. это не определено. Я вижу, что в моей версии Boost нет BOOST_MESSAGE.
Поэтому несовместимость QuantLib или я что-то пропустил?
В моей версии Linux Boost то же самое относится и к BOOST_MESSAGE — оно не определено

я видел этот но я не уверен, как это интерпретировать.

2

Решение

Боюсь, вы дали нам больше кредитов, чем мы заслужили 🙂

Мы еще не скомпилировали QuantLib против Boost svn. Последнее, что я пробовал, это Boost 1.53 (последняя выпущенная версия), в котором BOOST_MESSAGE все еще был доступен.

Спасибо за хедз-ап, хотя. Я исправлю библиотеку, чтобы она была готова к следующей версии. Как уже упоминалось в комментариях, это должно быть так просто, как добавление

#if BOOST_VERSION > 105300
#define BOOST_MESSAGE(msg) BOOST_TEST_MESSAGE(msg)
#endif

to test-suite / utilities.hpp.

6

Другие решения

на Linux я должен был добавить

libboost_unit_test_framework.so

Линкеру-> Библиотеки и

#include <boost/test/unit_test.hpp>

#define BOOST_MESSAGE( M )                  BOOST_TEST_MESSAGE( M )

уже присутствует в test / test_tools.hpp.
на окнах у меня #defines разные, а этого нет, поэтому я добавил его в

unit_test_log.hpp

где определяется BOOST_TEST_MESSAGE (в файлах буста, чтобы избежать повторения этой же проблемы в случае других приложений, использующих BOOST_MESSAGE).
Проблема BOOST_MESSAGE решена, но все еще не может устранить неоднозначность

const void* = boost::test_tools::check_is_close

а также

const void* = boost::test_tools::check_is_small

потому что это шаблоны. поэтому решение состоит в том, чтобы удалить его (набор тестов хорошо компилируется) или использовать соответствующие указатели для шаблонов функций

0

на винде, после ромовал или функционал

_use_check

в utilities.hpp

изменено, чтобы не иметь указателей на функции ШАБЛОНА по умолчанию, поэтому изменено на:

void _use_check(
const void*,
const void*) const {}

все еще были ошибки при создании проекта test-suite. неразрешенные внешние объекты: fdmhestonfwdop, fdmblackscholesfwdop, fdmsquarerootfwdop. очевидно, что эти классы (заголовки + исходные тексты) мне пришлось добавить в проект Quantlib, снова собрать библиотеку QuantLib-vc110-mt-gd.lib и перестроить проект test-suite.
после удовольствия с ошибкой компоновщика VS «lnk1210 превысил внутреннее ограничение размера ilk с инкрементным нет» (ему действительно нравится оперативная память, но в Windows этот ресурс довольно ограничен), все в порядке. скомпилирован. : п

0
По вопросам рекламы [email protected]