プラットフォームが同じであっても、「不正な形式のプログラムを読み込もうとしました」というエラーが表示される 質問する

プラットフォームが同じであっても、「不正な形式のプログラムを読み込もうとしました」というエラーが表示される 質問する

64 ビット システム上の 32 ビット アンマネージ DLL から関数を呼び出しています。結果は次のようになります:

BadImageFormatException: 不正な形式のプログラムを読み込もうとしました。(HRESULT からの例外: 0x8007000B)

最初、プロジェクトを Any CPU プラットフォームに設定していたので、両方を x86 に変更しましたが、このエラーはまだ発生します。これが、この問題に対する唯一の解決策です。

DLL は破損しているわけではなく、他のプログラム (ソースがない) で使用できるからです。依存関係が見つからないのではないかと思いましたが、確認したところすべて見つかりました。また、DllNotFoundExceptionその場合、エラーが発生するのではないですか?

他に何ができるでしょうか? 「代わりに 64 ビットのアンマネージ DLL を使用してください」と言う前に、そのような DLL は存在しないことを指摘しておきます。;)

ベストアンサー1

IIS 7 (および/または 64 ビット OS マシン) で 32 ビット アプリケーションを実行しようとすると、同じエラーが発生します。そのため、IIS 7 からアプリケーションのアプリケーション プールを右クリックし、[詳細設定] に移動して、[32 ビット アプリケーションを有効にする] を [TRUE] に変更します。

ウェブサイトを再起動すると動作するはずです。

ここに画像の説明を入力してください

おすすめ記事