MNAの世界

ブログをリニューアルしました!コメント、リンク、ツイートなどはお気軽にどうぞ。

DDR PC、技術系

[Stepmania] ビルド環境を VisualC++6.0 から 2005 Express Edition へ移行

投稿日:2009年1月10日 更新日:

珍しく風邪を引いてしんどすぎ!!!
しかも今日届く予定だった新PCは発送が遅れたとの連絡が!!!
あちょー!!!

仕方が無いので布団の中からStepmaniaのビルド環境をこれまでの VisualC++6.0 から 2005 Express Edition へ移行作業を行ってました。

実は公式サイトにあるStepmania3.9は2003でビルドしていると思われるため、6.0でのビルドは結構無理矢理やってます。
しかし、時代の流れには逆らえないもの。
ステマニに限らず世に出回っているあらゆるソースが.NET以降のコンパイラ用に作られるようになってきたため、6.0ではうまくビルドできないシーンにぶつかることが多くなってきました。
「security_cookie」のリンクエラーはその最たるものです。

さすがにもう乗り換えてもいいかな?と言うことで移行作業開始!!!
VisualC++ 2005 Express Edition は無料で使えますし、商用利用も問題ありません。
無料なのでDDRスタッフ全員がビルド環境を構築することも容易です。
最適化もバッチリ使えます。

メリットばかりのようですが、.NET以降は別系列のコンパイラと言ってもいいほど違うので移行作業は結構な苦労を伴いますw
いくつか遭遇した問題のメモを載せておきます。


・関数の形式が古いとのワーニングが出る

StdString.h(459) : warning C4996: ‘_vsnprintf’ が古い形式として宣言されました。

上記のようなワーニングが山のように出ます。
従来のprintfなどはバッファオーバーランなどが考慮されていないもので、それが脆弱性の原因になっていました。
現在ではそれらの問題を解決した新しい関数が追加されているため、それを使えと言う意味です。

しかしですねぇ、いくらなんでもこんなに出られると本当に必要なメッセージを見逃してしまいます。
と言うわけで黙らせましょう。
コマンドラインの「追加のオプション」にワーニングの4996番を無効にする設定を追加します。

/wd4996

・文法チェックが強力になった

より正しい文法に準拠したチェックが行われるため、一部のコードを修正する必要があります。
具体的には変数宣言が暗黙のintとして通っていた部分が通らなくなっていたり、for文のスコープが本来の範囲に限定されていたり・・・などです。
オプション設定である程度は防げますが、この際なので根気強く修正しましょう。

・ATLのバージョン違いでリンクエラーが発生する

LINK : fatal error LNK1104: ファイル ‘atlthunk.lib’ を開くことができません。

PlatformSDKのATLはバージョンが古いらしく、上記のようなリンクエラーがでます。
「C:\Program Files\Microsoft Platform SDK\Include\atl\atlbase.h」の下記部分をコメントアウトしましょう。

//#pragma comment(lib, “atlthunk.lib”)

・DirectShow絡みでリンクエラー

MovieTexture_DShow.obj : error LNK2001: 外部シンボル “_CLSID_FilterGraph” は未解決です。
MovieTexture_DShowHelper.obj : error LNK2001: 外部シンボル “_MEDIASUBTYPE_RGB24” は未解決です。
MovieTexture_DShowHelper.obj : error LNK2001: 外部シンボル “_MEDIATYPE_Video” は未解決です。
MovieTexture_DShowHelper.obj : error LNK2001: 外部シンボル “_FORMAT_VideoInfo” は未解決です。
他多数

上記のエラーが出る場合は、リンカ → 入力 → 追加の既存ファイルに「amstrmid.lib」を追加しましょう。

・winnt.hで構文エラー

winnt.h(222) : error C2146: 構文エラー : ‘;’ が、識別子 ‘PVOID64’ の前に必要です。

上記エラーが出る場合はDirectXのSDKの中にある BaseTsd.h が読み込まれている可能性があります。
インクルードの順番を調整して回避しましょう。
と言うかこんなバッティングするような構成にしないで星井・・・


プロジェクトによってはほかにもいっぱい出るかもしれません。
また、ビルドしたEXEを実行するには「msvcp80.dll」と「msvcr80.dll」が必要です。
環境に応じてインストールしてもらいましょう。

-DDR, PC、技術系
-,


comment

リンクが多数含まれていると表示されないのでご注意ください。(スパム対策)

関連記事

no image

映像音声分配器GET!

これまでは、アイマスのPVとかキャプチャするときはいちいちTVからキャプチャのほうに線を繋ぎかえて撮っていました。 しかし、これは回数が増えてくるとかなり面倒です。 かと言ってキャプチャを通してプレイ… 続きを読む

no image

PORT25 封じキター!

蔓延するスパムの影響でうちのプロバにもついにポート25番封じがやってきました。 (プロバイダ以外のメール送信サーバに接続できなくなると言うアレです。) 前々から予告はあったのですがうちの地域は今日から… 続きを読む

【DDR】 Global Internet Ranking 終了

世界ランキングが終了したようです。 結局ノンストップコースは復活ならずでしたね・・・ そして解禁も特に何も無いようですが、PS2版が発売の25日に何かが起こるらしいです! wktkしながら待ってましょ… 続きを読む

no image

トラックバックスパムを撃退セヨ

なんか突然トラックバックスパムが激しくなりました。 ついにこのマイナーなサイトも標的になってしまったようです。 あまりにも鬱陶しいのでいろいろ対策を実装してみました。 掲示板の書き込みと違って、一旦プ… 続きを読む

俺のクリスマス

前日のライブのあと、予想通り日帰り不可能な時間になったので都内のホテルに泊まりました。 こんなこともあろうかとしっかり有給申請済みなのですw まずは秋葉のカオス館で北米版DDRX2をGET! これが今… 続きを読む