さて、今回初めて開発用PCがWindows 7 の 64bit版を触っていて、いろいろ引っかかる部分が多いので、今後も引っかかりそうなものはここに書き留めていくことにします。
実行すると BadImageFormatException が出る
なんのことだかさっぱりでしたが、とりあえず参照設定したサードパーティのDLLの読み込みでNGらしい。で、ググってmsdnのリファレンスを見ると、この例外が発生する原因としてDLL または実行可能ファイルは 64 ビット アセンブリとして読み込まれますが、32 ビットの機能やリソースが含まれています。という記載があった。
今回の環境は、
開発用PC(Visual Studioが動作しているPC)・・・Windows 7 Professional 64bit版
サードパーティのDLL・・・Windows 64bit版 DLL
ということで、Win64bit環境だしデフォルトで作れば問題なさそうな気もするが、実はVisual Studioで作成したアプリ(プロジェクト)のデフォルトが32bit(x86)という罠。
というわけで、Visual Studioのプロジェクト側の設定を64bitにしてやるとうまく動きました。
設定変更方法
Visual Studioの「ソリューションエクスプローラー」でソリューションを右クリック。コンテキストメニューで「プロパティ」を選択。
「プラットフォーム」というプルダウン可能な項目があるので、環境に合わせて(今回だと「x86」から「x64」へ)変更。
※「x64」がプルダウンに無い場合は「構成マネージャー」を使って追加。
ちなみに無料のVisual Studio Expressだとこの設定ができないらしいが、実は単純に「Visualには」できないだけらしい(これナイスな情報ですね)。
0 件のコメント:
コメントを投稿