ライブラリ(DLL)を使ったアプリケーションを作成しようとすると、
アプリケーションはブレークモードになっています
System.BadImageFormatException: ‘間違ったフォーマットのプログラムを読み込もうとしました。
と表示される場合があります。
このBadImageFormatという部分がDLLが32bitもしくは64bitで作られたものを、C#アプリケーションから異なるbit(32bit)で作成し、DLLを参照した場合にこのエラーが表示されます。
最近のVisual Studioでは、C#のアプリケーションはデフォルトで32bitで作成されるため、とくにC言語で作られた64bitのDLLを使用している場合に、このエラーが発生しやすいです。
回避方法は、Visual Studioでプロジェクト名を右クリックし、プロパティを選択します。
表示されたプロパティ画面において、左側のビルドを選択し、右側に表示されている 32ビットを選ぶ のチェックを外します。
構成の部分でDebugとReleaseの設定があるので、両方のチェックを外してください。
この状態で、再度ビルドを行うと、間違ったフォーマットのプログラムを読み込もうとしました。というエラーメッセージは表示されなくなります。
この32ビットを選ぶ の設定はVisual Studioのバージョンによって異なります。
少なくともVisual Studio 2019以降では、32ビットを選ぶが初期設定となっているので、最近のVisual StudioでDLLを使ったアプリを作成する場合は注意が必要です。
コメント