C#でCOMオブジェクトwtittenを取得しましたが、これをC++ DLLで使用しています。 COMオブジェクトが#import
derectivec#COMオブジェクト& "ESPの値が関数呼び出しで正しく保存されませんでした..."
問題でインポートされ
C言語では++でその呼び出しは、私は、ランタイムチェックエラーになっていますCOMオブジェクトの任意の関数にC++ DLLから作られるとき:
を 私がでdeclatedている:C++ importディレクティブによって生成されたCOMオブジェクトラッパーでRun-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
は、すべての機能が__stdcall
可能重複http://stackoverflow.com/questions/4104774/the-value- of-esp-was-not-saved-properly) –
これはCOMコールでは非常に珍しい問題です。呼び出し規約と引数タイプはすべてマシン生成です。コードの記述、C#宣言とC++呼び出しのスニペットを少なくとも投稿する必要があります。簡単な説明は、古いバージョンの型ライブラリを使用していることです。 –
私は解決策を見つけたようです: c#COMのすべてのメソッドとパラメータのIn/Out/MarshalAs属性を宣言しました – ili