1. ホーム
  2. .net

[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。

2022-01-20 20:05:24

質問

64ビットシステムで32ビットのアンマネージドDLLから関数を呼び出しています。結果は以下の通りです。

BadImageFormatExceptionです。不正なフォーマットでプログラムを読み込もうとしました。(HRESULT: 0x8007000B からの例外)。

最初、プロジェクトがAny CPUプラットフォームに設定されていたので、両方ともx86に変更しましたが、このエラーはまだ発生しています。私が知っている唯一の修正方法はこれだけです。

DLLは他のプログラム(ソースを持っていない)で使えるので、壊れているわけでもなんでもないのですが。もしかしたら依存関係が見つからないのかもしれないと思いましたが、確認したところすべてありました。さらに、それは DllNotFoundException ということでしょうか?

他にどうすればいいのでしょうか?と言われる前に、64ビットのアンマネージドDLLがないことを指摘しておきます(笑)。

解決方法は?

なぜか ビルド 構成マネージャのチェックボックスが私の実行ファイルのためにチェックされていなかったので、古いAny CPUビルドで実行されたままでした。それを修正した後、Visual Studioはアセンブリをデバッグできないと文句を言いましたが、これは再起動すれば直りました。