2013年12月28日土曜日

C#:PInvokeStackImbalance が検出されました

C#のプログラムからC++で書かれたライブラリ(DLL)の関数を使う時に、表題のように、
PInvokeStackImbalance が検出されました
というエラーが出ることがあります。これは、C++とC#間での関数の互換性に問題があるようで、.NETのバージョンが新しくなると出てきます。解決策ですが、エラーがでた関数に対して、
  • [DllImport("xxxxx.dll", CallingConvention = CallingConvention.Cdecl)]
というように、関数の定義をしている箇所に青字の記述を追記してください。これは全ての呼び出し関数に必要というわけではないので、、、


0 件のコメント:

コメントを投稿