C#

【C#エラー】System.BadImageFormatException 間違ったフォーマットのプログラムを読み込もうとしました。

ライブラリ(DLL)を使ったアプリケーションを作成しようとすると、

 

アプリケーションはブレークモードになっています

System.BadImageFormatException: ‘間違ったフォーマットのプログラムを読み込もうとしました。

 

アプリケーションはブレークモードになっています。System.BadImageFormatException: '間違ったフォーマットのプログラムを読み込もうとしました。

 

と表示される場合があります。

このBadImageFormatという部分がDLLが32bitもしくは64bitで作られたものを、C#アプリケーションから異なるbit(32bit)で作成し、DLLを参照した場合にこのエラーが表示されます。

最近のVisual Studioでは、C#のアプリケーションはデフォルトで32bitで作成されるため、とくにC言語で作られた64bitのDLLを使用している場合に、このエラーが発生しやすいです。

 

回避方法は、Visual Studioでプロジェクト名を右クリックし、プロパティを選択します。

アプリケーションはブレークモードになっています。System.BadImageFormatException: '間違ったフォーマットのプログラムを読み込もうとしました。

表示されたプロパティ画面において、左側のビルドを選択し、右側に表示されている 32ビットを選ぶ のチェックを外します。

構成の部分でDebugReleaseの設定があるので、両方のチェックを外してください。

 

アプリケーションはブレークモードになっています。System.BadImageFormatException: '間違ったフォーマットのプログラムを読み込もうとしました。

この状態で、再度ビルドを行うと、間違ったフォーマットのプログラムを読み込もうとしました。というエラーメッセージは表示されなくなります。

 

この32ビットを選ぶ の設定はVisual Studioのバージョンによって異なります。

少なくともVisual Studio 2019以降では、32ビットを選ぶが初期設定となっているので、最近のVisual StudioでDLLを使ったアプリを作成する場合は注意が必要です。

コメント

タイトルとURLをコピーしました