随分と64ビットOSが増えてきましたね。
普通に使っても問題が発生することは減ってきましたが、開発時はまだまだ出てきます。
今回は提供されたDLLを利用しようと思ったときの話です。
提供されたDLLはWindows7の64ビットでも動作保証されているものです。
で、これをそのままVSでビルドすると、問題なく完了しますが、実行するとエラーとなります。
エラーは「間違ったフォーマットのプログラムを読み込もうとしました。 例外:0x8007000B」です。
DLLは32ビットでコンパイルされているけど、VSのコンパイル設定が64ビットであることが原因です。
対策はVSのコンパイル設定を32ビットに変更することです。
場所は、ソリューションのプロパティから、コンパイルの設定を選択します。
詳細コンパイル オプションを選択
ターゲットCPUを「x86」に指定すればOKです。
これで、DLLとプログラムの両方がx86版になるので、正常に動作するようになります。
うーん、とはいえ、DLLに両方のバージョンが混じったら無理と言うことですね。
今後はどうなるのかな?

