SSブログ

VS2003以前のプロジェクトをVS2005以降でビルドする [C++]

さすがにVS6のプロジェクトは少なくなってきたが、以前海外のプロジェクトではVS6やVS2003で止まっていることも多い。

それらのプロジェクトをVS2005以降でコンパイルする際には以下の3つを定義しておいたほうがよい。

_CRT_SECURE_NO_DEPRECATE
_CRT_NON_CONFORMING_SWPRINTFS
_USE_32BIT_TIME_T

おまけ

quake3 1.32bのソースをVisual Studio 2005以降でビルドする

Quake2のソースがGPLで公開されているので、それを基にしたフリーのFPSがいくつかあるようだ
http://www.warsow.net/

Quake2は今だったらほとんどのマシンでもさくさく動くだろうし、欧州では未だにQuake2は遊ばれているぐらい根強い人気ではあるが、今でこそ見劣りもするがグラフィック的にはQuake3のほうがよいし、自分が一番最初にはまったFPSなので思い入れがある。
で、なんか作れるかわからないけど、とりあえずコンパイルしてみることになった。

プロジェクトの改行がすべてLFなので、VSで読み込み、変換ができない。
海外のオープンソースにはありがちな罠で以下のようにして対応する。

・*.vcprojでソースディレクトリを検索する
・すべてのvcprojの改行をLFからCR+LFに変更する
・ついでにプリプロセッサの定義に、上記のSWPRINTFS以外を追加しておく
・マップ作成用はq3Radiant/Radiant.sln 、ゲーム本体はcode/quake3.slnにある

d:\quake3-1.32b\q3radiant\splines\splines.h(450) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
d:\quake3-1.32b\q3radiant\splines\splines.h(454) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

関数の戻り値が未記述なのでvoidにする

Radiantプロジェクトのプリプロセッサに

WINVER=0x0500
_WIN32_WINNT=0x0500

を追加する。MFC使ってるくせにWINVER定義しないとは何事か・・・

・iやnなど未定義の変数を宣言する
これはfor文の中に宣言された変数がfor文の外でも使える古いタイプのコンパイラと、最新の規格では中でしか使えないことになったことの矛盾により発生している

・EDITCONTINUE昨日を使わなければ、EDITCONTINUEではないプログラムデータベースを選択する
個人的にあまり信用して無い機能なんで、こうしました

・ソースコードもLFのみなので、新規にファイルを開くたびにCR+LF変換する旨の警告がでる
・タブ長が2のつもりで書かれているらしく、スペースの部分とタブの部分でインデントがあってない。
・プロジェクトファイルがそもそも無いのにプロジェクトファイル開こうとして失敗すると例外が出る(NULLチェックしてない)

とかいろいろと外人クオリティが満載ではある
これでどうこうする部分までもってくのは難しいな・・・


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

乱数生成3D関係 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。