Я установил boost_1_54 на окнах при извлечении из SVN, а затем
bootstrap
.\b2
Библиотека QuantLib, зависящая от boost, хорошо компилирует все, кроме одного проекта: test-suite, который использует BOOST_MESSAGE. это не определено. Я вижу, что в моей версии Boost нет BOOST_MESSAGE.
Поэтому несовместимость QuantLib или я что-то пропустил?
В моей версии Linux Boost то же самое относится и к BOOST_MESSAGE — оно не определено
я видел этот но я не уверен, как это интерпретировать.
Боюсь, вы дали нам больше кредитов, чем мы заслужили 🙂
Мы еще не скомпилировали 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.
на 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
потому что это шаблоны. поэтому решение состоит в том, чтобы удалить его (набор тестов хорошо компилируется) или использовать соответствующие указатели для шаблонов функций
на винде, после ромовал или функционал
_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 этот ресурс довольно ограничен), все в порядке. скомпилирован. : п