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

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

関連記事

本日のDDR 踏み納め

puzzle SP激 Beautiful Inside (Cube::Hard Mix) SP激 AFTER THE GAME OF LOVE SP激 今年はドカドカうるさくて荷物置きまくってゴミを散… 続きを読む

[Stepmania] 譜面製作者ごとのオフセット調整機能追加

Stepmaniaは音ゲーであるが故に付きまとう問題があります。 それは「タイミングは環境に依存する」と言うこと。 環境の違いによるずれが発生する原因としては、 1. マシンパワーの差 2. 入力デバ… 続きを読む

【DDR】 パラサバMAX 鬼 でAAAのムービー

クリアするだけでも凄いと言われるパラサバMAX 鬼 でAAAを出しています! Fascination MAXX のクリアムービーも出回ってますし、人間はどこまで進化するのだろうか・・・!? それにして… 続きを読む

DDR開拓史

仕事が早めに終わったので、DDRが復活したゲーセンを見に行くべく、天王寺に寄ってみました。 昔は音ゲーは1階にあったのですが、いつのまにか2階に移動していました。 その中にDDRはありました!早速プレ… 続きを読む

no image

ぷにケット19 開催!

アイマス東京ライブから一夜明けて・・・ う゛~叫びすぎて喉が痛いw 今回は当方の完全新曲はありませんでしたが、「神様のBirthday」を半年かけてやっと完成させましたw 鬼は太鼓譜面仕様になっていま… 続きを読む