2013-03-03 3 views
2

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

bootstrap 
.\b2 

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

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

+2

Вы знаете, как работает устаревание? Он говорит вам: «Хорошо, мы решили, что этот путь был плохим, и он больше не является частью этой библиотеки. Однако, поскольку мы хороши, мы позволяем вам перейти на новый материал в течение нескольких выпусков, тогда он исчезнет хорошо." Вот что случилось с 'BOOST_MESSAGE'. Однако вы можете уйти с # #define BOOST_MESSAGE (msg) BOOST_TEST_MESSAGE (msg) ', прежде чем включать заголовки QuantLib. – Xeo

+0

спасибо, но вы действительно думаете, что совершенно новая версия QuantLib, загружаемая через svn, которая построена, безусловно, каждый день, ее разработчики имеют эту ошибку, и каждый пользователь вынужден делать #define BOOST_MESSAGE (msg) BOOST_TEST_MESSAGE (msg) на своем собственном? Возможно, хотя и не уверен, так лучше спросите. Я считаю, что здесь что-то еще произошло – 4pie0

+0

Ну, я не думаю, что они также создают Boost из источника svn, так как это поставило бы огромный лимит на пользователей библиотеки. Честно говоря, немного полагать, что библиотеки всегда остаются на вершине своих зависимостей, если честно. – Xeo

ответ

6

Я боюсь, что вы дали нам больше очков, чем мы заслуживали :)

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

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

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

на тест-люкс/utilities.hpp.

+0

Привет Луиджи, спасибо за ответ, я также отправил в список квантил-dev. BOOST_TEST_MESSAGE тоже не определено, но я все еще ищу – 4pie0

+0

и есть еще что-то: BOOST_ERROR, BOOST_CHECK, а также двусмысленности относительно const void * = & boost :: test_tools :: check_is_close – 4pie0

+0

Я вижу. Пока я предлагаю придерживаться Boost 1.53. –

0

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

libboost_unit_test_framework.so

к Linker-> Библиотеки и

#include <boost/test/unit_test.hpp> 

#define BOOST_MESSAGE(M)     BOOST_TEST_MESSAGE(M) 

уже присутствует в тестовом/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

на Windows, после romoval или функции

_use_check

в ЖКХ.HPP

изменен на нет указателей на шаблонные функции по умолчанию, и поэтому изменен на:

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

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