web-dev-qa-db-ja.com

VSインストールで消える誤ったフォーマット例外でプログラムをロードしようとしました

いくつかの関数を内部的に呼び出すC#Windowsアプリを設計しました[C++からインポートDLL DllImport()を介して]]

私のC++コードはWin32プラットフォームで.DLLとして構築されていますが、私のC#は「任意のCPU」プラットフォームとして構築されています。

テストマシンで.EXE(C#)を実行すると、次のようなエラーが発生します。

hresult0x8007000Bからの誤ったフォーマット例外でプログラムをロードしようとしました

ただし、VSS 2010をマシンにインストールしてからEXEを実行しても、このエラーは発生しません。

1)このエラーの理由は? 2)VSSのインストール時にエラーが発生しないのはなぜですか?

私はWin7OS(64ビット)を使用して.EXE(C#)をAnyCPプラットフォームでビルドしました。これは、DLL(C++ Dllを使用してC#にインポート)に依存します。 DllImport)組み込みWin32

これはほとんどの場合、64ビットdll/exeなどから32ビットコードを呼び出しているか、32ビットdllから64ビットdllを呼び出しているためです。 x86用のc#をビルドするとどうなりますか?それはまだ64ビットで実行されます。

10
Rob Allen