3

svnからチェックアウトしてWindowsにboost_1_54をインストールしてから

bootstrap
.\b2

ブーストに依存する QuantLib ライブラリは、1 つのプロジェクト (BOOST_MESSAGE を使用するテスト スイート) を除くすべてのプロジェクトを適切にコンパイルします。これは未定義です。私のバージョンのブーストには BOOST_MESSAGE がないことがわかります。したがって、これは QuantLib の非互換性ですか、それとも何か見逃していますか? 私のLinuxブーストバージョンでは、同じことがBOOST_MESSAGEに適用されます-未定義です

私はこれを見たことがありますが、これをどのように解釈するかわかりません。

4

3 に答える 3

9

残念ながら、あなたは私たちが値するよりも多くの信用を私たちに与えてくれました:)

Boost svn に対して QuantLib をまだコンパイルしていません。私が試した最新のものは、BOOST_MESSAGE がまだ利用可能だった Boost 1.53 (最新のリリース バージョン) です。

しかし、頭を上げてくれてありがとう。次のバージョンの準備ができるように、ライブラリにパッチを適用します。コメントで述べたように、追加するのと同じくらい簡単なはずです

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

test-suite/utilities.hpp へ。

于 2013-03-04T09:33:36.333 に答える
0

Windows では、romoval または function の後

_use_check

utility.hpp 内

デフォルトで TEMPLATE 関数へのポインターを持たないように変更されたため、次のように変更されました。

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

テスト スイート プロジェクトのビルド中にまだエラーがありました。未解決の外部: fdmhestonfwdop、fdmblackscholesfwdop、fdmsquarerootfwdop。明らかに、このクラス (ヘッダー + ソース) を Quantlib プロジェクトに追加し、ライブラリ QuantLib-vc110-mt-gd.lib を再度ビルドしてから、テスト スイート プロジェクトを再構築する必要がありました。VSリンカーエラー「lnk1210がインクリメンタルなしで内部ilkサイズ制限リンクを超えました」(RAMが本当に好きですが、Windowsではこのリソースがかなり制限されています)を楽しんだ後、問題ありません。編集済み。:p

于 2013-03-07T21:23:44.267 に答える
0

Linuxでは、追加する必要がありました

libboost_unit_test_framework.so

Linker->Libraries と

#include <boost/test/unit_test.hpp>

#define BOOST_MESSAGE( M )                  BOOST_TEST_MESSAGE( M )

test/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

これらはテンプレートだからです。したがって、解決策はそれを削除するか(テストスイートはうまくコンパイルされます)、関数テンプレートへの適切なポインターを使用することです

于 2013-03-04T13:58:14.777 に答える