BOOST_MESSAGE undefined - c ++, boost, quantlib

Я встановив boost_1_54 на вікна за допомогою перевірки з svn, а потім

bootstrap
.b2

Бібліотека QuantLib, залежна від підвищення, добре компілюєтьсявсе, крім одного проекту: test-suite, який використовує BOOST_MESSAGE. це не визначено. Я бачу, що в моїй версії boost не існує BOOST_MESSAGE. Тому чи є ця несумісність з QuantLib або щось я пропустила? На моїй linux boost версії те ж саме стосується BOOST_MESSAGE - це не визначено

я бачив це але я не впевнений, як це інтерпретувати.

Відповіді:

6 за відповідь № 1

Я боюся, що ти дав нам більше кредиту, ніж ми заслужили :)

Ми ще не скомпільовані QuantLib проти Boost svn.

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

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

до test-suite / utilities.hpp.


0 для відповіді № 2

на Linux я повинен був додати

libboost_unit_test_framework.so

до Linker-> Libraries і

#include <boost/test/unit_test.hpp>

#define BOOST_MESSAGE( M )                  BOOST_TEST_MESSAGE( M )

вже присутній у тесті / test_tools.hpp. на windows у мене різні #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

тому що це шаблони. тому рішення полягає в тому, щоб видалити його (test-suite добре компілюється) або використовувати відповідні покажчики до шаблонів функцій


0 для відповіді № 3

на Windows, після романування або функції

_use_check

у utilities.hpp

змінені, щоб не мали вказівки на функції TEMPLATE як типові, тому змінено на:

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

були ще помилки під час створення тестового комплектупроекту. невирішені зовнішні: fdmhestonfwdop, fdmblackscholesfwdop, fdmsquarerootfwdop. Очевидно, що ці класи (заголовки + джерело) мені довелося додати до проекту Quantlib, побудувати бібліотеку QuantLib-vc110-mt-gd.lib і переробити тестовий набір. після задоволення з помилкою VS linker "lnk1210 перевищив внутрішній розмір посилання обмеження з інкрементним ні" (це дійсно подобається RAM, але на вікнах у мене цей ресурс досить обмежений), це нормально. складено. : стор