« 2011年10月 | トップページ | 2011年12月 »

2011年11月の記事

2011年11月 3日 (木)

VC++ Express 2010にSP1を適用したらx64コンパイルできなくなったでござるの巻

私は、Visual Studioは買ってなくて、もっぱらExpressを使っています。最近のメインはVisual C++ Express 2010。Visual C++ Expressは、それ自身では32ビットコンパイルしかできないのですが、Windows SDKをインストールするとx64とかItaniumとかのコンパイルもできるようになります。

そうやって、Visual C++ Express 2010でx64バイナリを作っていたのですが、先週末から急にx64コンパイルができなくなってしまいました。コンパイルしようとすると、次のようなメッセージが出てとまってしまうのです。

Error: The "ConfigurationGeneral" rule is missing from the project

また、x64用のプロジェクトのプロパティを表示しようとすると、よくわからないダイアログが出て、プロパティを参照できない状態にもなってしまいました。

ずいぶん困ったのですが、結局これは(タイトルにも書いたとおり)Visual Studio の SP1 が原因だったようです。コンパイルできなくなっていることに気づく数日前に、Windows UpdateでVisual Studio 2010 Service Pack 1というのが来ていたのであまりよく考えずに適用したのですが、これが敗因でした。

Visual C++ Expressには32ビット版のコンパイラしか入っていないのですが、Windows SDKには、Visual C++のコンパイラ本体がフルセット(32ビット、x64、Itanium)含まれていて、だから、Windows SDK入れるとVisual C++ Expressでx64コンパイルができるようになるわけです。Visual Studio 2010 SP1は、C++コンパイラ本体も更新するのですが、どういうわけか、Visual C++ Expressに含まれる 32 ビットコンパイラだけを更新し、Windows SDKがインストールしたx64コンパイラは更新せずに放置する様子。このためx64コンパイラのバージョンが合わなくなっていたのでした。

売り物のVisual Studioにはx64用のコンパイラが入っていて、SP1は当然そのコンパイラは更新するはず。Expressの環境ではx64コンパイラがインストールされていても更新しないというのは、嫌がらせの域ですね。

最悪だったのは、VS SP1のアンインストールができないこと。

コントロールパネルからVisual Studio 2010 SP1 のアンインストールを選ぶことはできるのですが、ダイアログが出て「SP1をアンインストールすると、Visual Studioが起動できなくなって、SP1の再インストールもできなくなるけど、いいですか?」みたいなことを言われて。

そんなの、いいわけがない。

一瞬目の前が真っ暗になりましたが、System Restore(システムの復元)を使ってSP1適用前まで戻すことで、なんとか復旧できました。

マイクロソフトから何か対策が出ると信じて、SP1は適用せずに待つしかなさそうです。

« 2011年10月 | トップページ | 2011年12月 »