12

[DllImport() を介して C++ DLL からインポートされた] 一部の関数を内部的に呼び出す C# Windows appln を設計しました。

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

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

hresult 0x8007000B からの不正な形式の例外でプログラムをロードしようとしました

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

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

私はWin7 OS(64ビット)を使用してAnyCPUプラットフォームで.EXE(C#)を構築しましたが、これはWin32で構築されたDLL(DllImportを使用してC#でインポートされたC++ Dll)に依存しています

4

1 に答える 1

11

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

于 2012-09-18T19:49:23.757 に答える