■ エラー「(呼び出し関数名)がスタックを不安定にしています」が表示される
エラー内容
(呼び出し関数名)がスタックを不安定にしています。 PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。 呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを 確認してください。
原因
.NetFramework 3.5 までは、[DllImport("demodll.dll")]でよかったが、 .NetFramework 4.0 からは、「CallingConvention = CallingConvention.Cdecl」が必要。
解決策
【修正前】[DllImport("demodll.dll")]【修正後】
[DllImport("demodll.dll", CallingConvention = CallingConvention.Cdecl)]
参考文献
http://csharpblues.jugem.jp/?eid=8■ エラー「(呼び出し関数名)がスタックを不安定にしています」が表示される
エラー内容
[BadImageFormatException: ファイルまたはアセンブリ 'xxxx'、またはその依存関係の 1 つが読み込めませんでした。 間違ったフォーマットのプログラムを読み込もうとしました。
解決策
プロジェクトを右クリックし、[ビルド]で「プラットフォームターゲット:x64」を選択
参考文献
https://greentown.tokyo/badimageformatexception/■ C++ の DLLファイルを参照追加した際にエラーが表示する
エラー内容
' XXX.dll' への参照を追加できませんでした。 ファイルがアクセス可能で、有効なアセンブリまたは COMコンポーネントであることを確認してください。
原因
* 追加しようとしているDLLが、.NETのアセンブリではないため
解決策
案1* 参照に追加するのではなく、DLLを実行ファイルと同じフォルダに配置する (プログラムの内容については、以下の関連記事を参照)https://blogs.yahoo.co.jp/dk521123/37078399.html
案2
* DLLファイルのプログラムをC++ / CLIに書き直し、.NETのアセンブリに対応させる (プログラムの内容については、以下の関連記事を参照)https://blogs.yahoo.co.jp/dk521123/38074280.html
参考文献
案1https://so-zou.jp/software/tech/programming/c-sharp/troubleshooting/dll-could-not-be-added.htm