6

SWIGを使用した経験のある人はいますか?私は現在QuantLibを調査しており、SWIGを使用してC#コードを生成できることを確認しました。QuantLibと独自のクローズドソースライブラリ(おそらく.Net dllとして利用可能になる)を使用して、財務関数の結合ライブラリを作成するオプションを検討しています。アイデアは、これらの両方を組み合わせて、統合されたスーパーライブラリを作成することです。QuantLibの.Netポートを見たことがありますが、アクティブに維持されていないようです(実際にどれだけ移植されたかは完全にはわかりません)ので、避けています。

このステップ1は、「どこでも」使用できるライブラリ、つまりMS Officeアプリケーション(VBA経由)、コンソールアプリ、およびサーバー側(Webアプリなど)の作成の難しさを評価することです。これにはCOM相互運用機能が関係していると思いますが、どこから始めればよいのか、あるいは正しい方向に進んでいるかどうかはわかりません。

私はC++の経験がありません。そして、COMは私が釉薬をかけたもの(現時点では私にとって流行語)です。このトピックに関連するMSDNの記事を知っています。

私は次の行に沿って助けを探しています:

  1. C#でQuantLibを使用する代わりの方法はありますか?
  2. 開発環境に関して、何が必要ですか?
  3. SWIGを介してコンパイルされたすぐに使用できるQuantLibC#ライブラリを知っている人はいますか?(一等賞=私にとっては仕事が少ない)

何か助けていただけますか?

編集:より良いものが提供されていない限り、私は私の答えを正しいものとして受け入れました。

4

1 に答える 1

9

したがって、SWIGのC#バインディングが使用可能であるように見えます。それらを見つけるには、SVNリポジトリまたはSouceForge上のファイルのリストを参照する必要があります。

SWIGフォルダーには、選択した言語に応じていくつかのサブフォルダーが含まれています。私の場合、C#が興味を持ったものでした。PATH最初にSWIGをダウンロードし、実行可能ファイルをシステム変数にダウンロードする必要があります。

作成する必要Readme.txtのある環境変数の詳細が含まれているので、必ずお読みください。QL_DIR

これはVSExpressの制限である可能性がありますが、ソリューションファイルにはC#プロジェクトとC ++プロジェクトの両方が含まれており、いつでもC#またはC++のいずれかの部分のみを開くことができます。私の提案は、C ++プロジェクトとC#プロジェクト用に別々のソリューションファイルを作成することです。

.Netのバックグラウンド、libファイル、objファイル、およびc ++に関連する他のすべてのジャズから来ると、慣れるまでに少し時間がかかります。

動作するC#ライブラリを取得するために実行する手順

  1. ここで説明されているようにQuantLibとBoostをダウンロードします
  2. QuantsLib-SWIGフォルダのtarボールをSourceForgeからダウンロードします。編集:ホームページで利用可能なzipのダウンロードがあります。サブフォルダ内にリストされています。下のv1.0フォルダを確認してくださいBindings
  3. swig.cmdフォルダにあるファイルを実行しQuantLib-SWIG\CSharpます(SWIG first()をダウンロードする必要があります->これにより、Quantlibのcsラッパーファイルが生成されます。
  4. c ++プロジェクトをビルドしますNQuantLibc-ここで作成されたdllは、常にNQuantlib C#でビルドされたdllと一緒に出荷される必要があることに注意してください。属性で読み取り可能な場所に配置する必要があり DLLImportます。(場所のリストについては、MSDNのダイナミックリンクライブラリの検索順序を参照してください)
  5. C#プロジェクトをビルドするNQuantLib

開発環境に関して、何が必要ですか? QuantLibの現在のバージョンはVS2008でのみビルドされるようです。VS2010にいくつかの変更があり、コンパイルでいくつかの問題が発生します。C#プロジェクトは正常にビルドされますが、ターゲットフレームワークをv4からv3.5に変更することを忘れないでください。

注:これを書いている時点でQL_HEX_VERSION、C++SWIGプロジェクトのソースファイルの番号に問題がありました。実行後swig.cmd、VSプロジェクトを開き、の344行目をに変更quantlib_wrap.cppします。

#if QL_HEX_VERSION < 0x010001f0//0x010100f0

プロジェクトの作者にメールを送り、フィードバックを待っています。編集: Luigi、これはSVN(私が使用した)のコードに問題があることを正しく知らせてくれました。彼は、QuantLib-SWIG-1.0.zipバインディングを使用する必要があることを提案しました。

Quantlibは、最新リリースのVC++2010にも基づいています。

于 2010-09-16T13:47:02.490 に答える