2010-12-12 14 views
1

私は、Visual Studio 2010のWebサイトからQuantLib(quantlibを検索し、インストールのリンクを確認してください)をダウンロードしてビルドしました。しかし、C++の知識が最小限であるため、SWIG私はC#でQuantLibライブラリを呼び出すことができます。 SWIG変換後、私は適切なビルドを取得します。私はこれを実行するだろうと思ったけど、実行時に、私はC#クラスで複数の場所に次のエラーを取得する:「!NQuantLib QuantLib.NQuantLibcPINVOKE :: new_Date__SWIG_1は」 QuantLibをQuantLib-SWIGに変換するC#

PInvokeStackImbalanceが
のPInvoke関数の呼び出しを検出しました

アンバランスがありますスタックこれは、管理対象のPInvokeシグネチャがアンマネージ対象シグネチャと一致しないためです。 PInvokeシグネチャの呼び出し規約とパラメータが、対象となる管理されていないシグネチャと一致することを確認します。

MDA Error MSDN

私はこれがそう、私はこの問題を解決する方法を教えてください一般的なエラーであることと思いますか?

+4

http://stackoverflow.com/questions/3334011/compiling-quantlib-via-swig-for-c –

答えて

1

バージョンの不一致などあります。

まず、VC2010を使用しているので、使用しているQuantLibとQuantLib-SWIGのバージョンがSubversionからチェックアウトされているものとします。これは正しいです?

第2に、QuantLibとQuantLib-C#のチェックアウトに含まれるVC2010プロジェクト(ファイル名に_vc10のプロジェクト)を使用しましたか他のプロジェクトに変換しましたか?あなたは両方のリリースモードでコンパイルしましたか?また、提供されているC#の例は、IDEから実行された場合に実行されますか? (EquityOptionプロジェクトとBermudanSwaptionプロジェクト)

最後に、どのバージョンのSWIGを使用していますか?

+0

こんにちはルイージです。ご回答有難うございます。私は12月10日からSVN QuantLibリビジョンを1.44に上げて使用しています。私はあなたのすべてのステップを踏襲し、リリースモードでC#ソリューションを構築することがそのトリックでした。現在、サンプルプロジェクトでビルドを実行する際に、実行時にクラッシュすることはありません。しかし、デバッガをアタッチしてリリースモードでサンプルを実行しているときに、まだPInvokeStackImbalanceがスローされていることはわかりません。これは問題ですか?それとも、PInvokeStackImbalance例外をデバッガの例外リストから削除することはできますか? – BigChief

+0

http://www.go4answers.com/Example/pinvokestackimbalance-exception-126037.aspxまだ完全にVS2010に変換されていないので、まだQuantLibの欠点ですか? – BigChief

+0

私は参照してください。これが呼び出し規則の問題である場合、呼び出しがSWIG生成コード内にあるので、私たちがQuantLib内で行うことはほとんどできません。その間、上記のリンクの最後の提案(に関するもの)が私にパッチを当てたプロジェクトを送ってくれたら、次のリリースに変更を追加します。 (もしそうなら、最新のリリースを最初にチェックして、diffファイルがよりきれいになるようにしてください) –

0

一時的な修正は、 QuantLib_vc10溶液中のコンフィギュレーションファイル( App.configファイル)を作成し、アンバランススタックエラーを抑制するためNetFx40_PInvokeStackResilience要素を追加することであろう。

私は、次ののApp.configファイルを作成し、これは BermudanSwaption_vc10 EquityOption_vc10プロジェクトにロードされていました。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
     <NetFx40_PInvokeStackResilience enabled="1"/> 
    </runtime> 
</configuration> 

次に、2つのプロジェクトは正常に動作しますが、パフォーマンスには多少のコストがかかります。

関連する問題