64bit IDE in Visual C++ 2005 Express Edition

64bit環境下で64bitアプリを開発するには、正式には製品版のVS2005を購入する必要があるが、設定を書き換えればExpress Editionでもある程度は可能だ。


手順は以下の通り。

  1. install Visual C++ 2005 Express Edition
  2. install Platform SDK
  3. Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う」のうち、[Visual C++ フォルダ]以外の部分を適用
  4. 実行ファイルのパスを「C:\Program Files\Microsoft Platform SDK\Bin\win64\x86\AMD64」に
  5. ライブラリのパスを「C:\Program Files\Microsoft Platform SDK\Lib\AMD64」に
  6. インクルードパスを「C:\Program Files\Microsoft Platform SDK\Include」と「C:\Program Files\Microsoft Platform SDK\Include\crt」に
  7. VC\VCWizards\1041\common.jsの667行目を「CLTool.BasicRuntimeChecks = runtimeBasicCheckNone;」に変更
  8. VC\VCWizards\1041\common.jsの677行目、702行目、3626行目の三箇所を「LinkTool.TargetMachine = 0;」に変更
  9. VC\vcwizards\AppWiz\Generic\Application\scripts\1041\default.jsの196行目を「CLTool.DebugInformationFormat = 3;」に変更


最後の三つの変更内容はそれぞれ、

  • ランタイムチェックが規定値(有効)だと未解決シンボルが出るので、無効にする。
  • Express Editionだと、TargetMachineをmachineAMD64にすると「X64」という間違ったオプションをリンカに渡すので、指定なしに変更。
  • 64bit版コンパイラは/ZIオプション(エディットコンティニュー)をサポートしていないようなので、プログラムデータベース形式に変更。


以上で64bit環境下(Windows XP x64 editionもしくはVista 64bit版)であれば、IDEからデバッグできる。コードバイトの表示も可能。
ただしこの方法だとだと(Win64ではなく)Win32プロジェクトになるので、プロジェクトファイルを公開するのには使えない。
必要であればWindowsシンボルパッケージもインストールする。Cランタイムライブラリ(msvcrtd.dll)のPDBファイルはPlatformSDKに存在しているが、バージョンが違うのか、認識されない。