DllImport() を介してネイティブ 32 ビット DLL を使用する 32 ビット .net アプリケーションがあります。ネイティブ DLL は内部のファイル解析ライブラリであり、C# への移植は人々が更新した場合 (他のソフトウェアが使用しているため) に問題になるため、これを使用する必要があります。
問題は、ネイティブ DLL で任意のメソッドを実行しようとすると、System.ExecutionEngineExceptionがスローされることです。実際、マネージド アプリケーションを、ネイティブ メソッドを呼び出すだけの単純なテスターに縮小しましたが、それでも失敗します。
私は 64 ビットの Windows 7 を使用していますが、すべてを 32 ビットのバイナリとしてコンパイルしているので問題ありません。
また興味深いことに、Dependency Walker でネイティブ DLL を見ると、msvcr90.dll が見つからないことが示されていますが、Dependency Walker で他のネイティブ DLL を開くと、参照されている msvcr90 を見つけることができます。 .dll で問題ありません。DLL 参照を台無しにするネイティブ DLL のコンパイルに問題がある可能性はありますか?