2005-07-18

[]VisualStudio2005 Express Beta2 VisualStudio2005 Express Beta2 - Nao_uの日記 を含むブックマーク はてなブックマーク - VisualStudio2005 Express Beta2 - Nao_uの日記 VisualStudio2005 Express Beta2 - Nao_uの日記 のブックマークコメント

昨日作ったプログラムを自宅のマシンでコンパイルしようとすると、cg.libをリンクしようとした時点で「ファイルが無効であるか、 またはディスクがいっぱいです」というエラーが出て失敗してしまった。いろいろ試してみたけれど、同じファイルを同じようにリンクしようとして失敗しているので、どうやらVCのバージョンが古いのが原因みたいだ。自宅ではいまだにVC++5.0を使っているためにプロジェクトの形式が古くてトラブルになることも多い。そろそろ潮時かと思って新しいバージョンのVCを買おうと思って値段を調べているときに、VisualStudio2005 Expressのベータ版があることを知った。

これを導入すれば購入する前にリンクの失敗の原因がバージョンが古いためかどうかを確かめられるし、ベータ版でも必要な機能がほとんどそろっているために、うまくいけば新しく買わずともしばらくはこれで開発ができるかもしれないと思い、早速ダウンロードしてみた。

インストールは問題なく終わったのだけど、プロジェクトを開いてコンパイルしようとすると「Cg/Cg.hが開けません」「windows.hを開けません」などとエラーメッセージが出た。Cg.hが開けないのはパスを設定してないからまぁ良いとして、windows.hまで開けないのは何故だ?と思って調べてみると、Platform SDKというものを一緒に入れないとWin32のアプリケーションはコンパイルできなくなったらしい。自宅の開発環境が5年前のままなので気がつくと世の中の流れに置いていかれてる。

http://gamdev.org/w/?%5B%5BVisualStudio2005ExpressBeta%A4%C7Win32%A5%A2%A5%D7%A5%EA%A4%F2%A5%D3%A5%EB%A5%C9%A4%B9%A4%EB%CA%FD%CB%A1%5D%5D

とりあえず上記サイトを参考にPlatform SDKを落としてからインクルードパスを設定しようとしたのだけど、メニューのどこからディレクトリを設定したらいいのか分からなくて、また迷った。

いつもの[ツール]->[オプション]->[ディレクトリ]にある「インクルードファイル」とか「ライブラリファイル」とかを選んでも何も表示されない。これもバージョンが新しくなったから変わったのか?と思ってあちこち探してみるけれど、それらしい設定が見当たらない。

あきらめて検索をかけてみると、

http://www7.plala.or.jp/hop-step-jump/c_setting09.html

ここのサイトに次のような記述があった。

Beta2では、この部分に本来記述されるべき部品が表示されないというバグがある。

よって残念ながらBeta1のときと同じようにはこの画面からは設定できない。

なぜこんな状態で発表したのかM$の見識を疑います。Beta1よりもバグを増やしているのですから。

どうやらバグのせいで本来出るべき場所に表示が出ず、IDEからは設定できないらしい。なんでそんな大バグの入ったものを公開してるのだろうか?

現状ではテキストファイルを直接触る以外に方法はないようだ。

MSが出している文書*1にも同様の記述があり、そこには「Visual C++ 2005 Express のインストール ディレクトリの .\vc\vcpackages サブディレクトリにあるVCProjectEngine.dll.express.config ファイルをテキスト エディタで変更し、変更内容を保存した後、Visual C++ 2005 Expressを再起動します。」と書かれているが、これだけでは最初の一回の修正しか反映されず、2回目以降の修正は上記サイトの解説にあるように、テキストの修正後に「C:\Documents and Settings\\Local Settings\Application Data\Microsoft\VCExpress\8.0\VCComponents.dat を削除して、VC++を再起動する。」という手順を踏まないと反映されない。

先にPDFを見ながら作業をしていて、最初の一回はうまくいったのにそれ以降の修正が一切反映されなくて、これを知るまでに相当に無駄な時間をすごしてしまった。

これでとりあえずコンパイルは通るようになったものの、printfやfopenを使っているところで「warning C4996: 'fopen' が古い形式として宣言されました。」という警告が大量に出た。対処としては、とりあえず下記サイトを参考に、

http://www.ailight.jp/blog/sha256/archive/2005/05/04/6684.aspx

#pragma warning(disable: 4996)// C4996のワーニングを無効

というpragmaをソースの先頭に入れて回避。正しい回避方法はどうやるんだろう?。


あとはMFC関連のリンクで.libファイルが見つからない、などのエラーが出たけれど、よくわからないので昔のバージョンのライブラリをリンクして回避した。GLUTを使っているのでMFCがなんに使われているか分からないけどなんとなく動いているし、これ以上追求するのも面倒なのでなんだか怪しいけどとりあえず放置しておく。自宅でテストのプログラムを動かすだけだから、なんとなく動いてくれさえすればそれでいい。

なんだかずいぶん無駄なことで時間を食ってしまったけれど、当面はこれだけでも不自由はなさそうなので、新バージョンの購入は今回は見送ることにした。統合開発環境さえ無料でダウンロードできるとは、いい時代になったものだと思う。