Seaside Laboratory

Posts

Visual Studio 2010 Express をインストール

VC++ 2010 はファイルサイズがやたらと大きかったり、登録キーが必要だったりと、あまり導入する気が起こらないバージョンだったが、使いたくなったときに登録キー発行フォームがなくなっていたら困るので、2008 から移行することにした。

Visual C++ 2010 Express のインストール

Windows SDK のインストールまわりで不具合があるようなので、「入手可能な Windows SDK について」に書かれているインストール順を確認しておくのがおすすめ。

推奨しているインストールの順番は以下のとおりです。詳しい説明は、上記のダウンロード案内のページで入手できる readme.htm (英語版) に記載されています。

1. Visual Studio 2010
2. Windows SDK 7.1
3. Visual Studio 2010 SP1
4. Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1

VS2010ExpressJPN.iso の中にある Setup.hta を実行するとインストーラーが起動する。インストールの流れは 2008 と大差なく、前回同様にゴミ (Silverlight 等) を便乗インストールしようとするのでチェックを外しておく。

同じように SQL Server 関連はいらないだろうと思い、

  • Microsoft SQL Server Compact 3.5 SP2 JPN
  • Microsoft SQL Server Compact 3.5 SP2 x64 JPN

をアンインストールしたところ「C++ プロジェクトでは、IntelliSense と参照情報は利用できません。」というエラーが出てしまった。この原因については「Inside IntelliSense」に詳しく書かれている。

まず、VC9 までは、NCB ファイルを使っている。これはかなり古くからあるもので、色々と問題も多い。ファイルの内容はすべてメモリに入れておかなければならないし。変更があるたびに、大部分を参照しなければならない。

そこで、VC10 からは、SQL Server Compact を使うことにしたらしい。これは元々、Windows CE 向けに作られたもので、ひとつのファイルを使用し、プロセスに組み込んで使う。

ということなので IntelliSense を使うなら SQL Server Compact は残す必要あり。

サービスパックのインストール

VS2010SP1dvd1.iso の中にある Setup.exe を実行。2008 とは違いサービスパックは別途入手する必要がある。

「指定ダウンロード サイズ」という表示が出て少し驚くが、おそらくオンライン版とプログラムを共有しているのだろう。当然オフライン版はダウンロード不要なのでサイズの表示が 0 MB になる。

登録キーの取得

Visual C++ を起動し、メニューのヘルプから登録キー取得サイトにジャンプする。Microsoft アカウントが必要なので、大昔に MSN Messenger を使う際に取得した Hotmail アカウントでログインした。

キーを入手するにはアンケートに答えなければいけないが、何も入力せず「次へ」ボタンを押して、必須と言われた部分は「不明」にしておけば問題なし。

入手したキーの先頭 5 文字で検索してみると、まったく同じキーが記載されているサイトが見つかったので、ユーザー個別のキーが発行されているわけではなく、共通のキーが使われている模様。

ライブラリのディレクトリ設定

Visual Studio 上にある「VC++ ディレクトリ」は全体の設定として反映されないので、ユーザーディレクトリにある以下の設定ファイルを直接書き換える。

%LOCALAPPDATA%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props

スコープ解決演算子 (::) の右側にあるトークンは使えません。

STL 版の std::max とマクロ版の max の定義が衝突してエラーになった。Windows 環境で STL を使っているプログラマーならおなじみのエラーではあるが、ソースコードをまったくいじっていないのにエラーが出るようになったので、インクルードされる順番かなにかが変わったのだろうか。

コンパイル時に指定する定数に NOMINMAX を追加すればエラーは出なくなる。プリプロセッサの中でも、inline に代替可能な関数マクロは早く死滅してほしい。