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 SuperNOVA2 ロケテ開催

町田にてロケテ決定! www.konami.jp  3 Usershttp://www.konami.jp/am/locationtest/ddr_sn2/http://www.konami… 続きを読む

北米版DDRX

北米でPS2版DDRXが一足早く発売したみたいです。 今度の公録のときにでもカオス館で仕入れてこようかな・・・ 今回の目玉はメイドYUNI!!! キタキタキターーーーーー!!!!!!!!!!(゜∀゜)… 続きを読む

確定申告×本日のDDR×フグ食った

今年は久しぶりに確定申告が必要になったので梅田の第2ビルのあたりでやってる会場に行ってきました。 そのついでに学生時代ホームにしていたニューウメダに寄ってみました。 旧筐体のDDRXを見るのは初めて!… 続きを読む

[イベント]プリフェス6&アンロックハートでウマウマ

プリンセス☆フェスタ6とアンロックハートが開催されました。 もちろんDDRも開催です!!! 今回はアイマス曲大幅増強!!! と言うことで当方が作った曲はほとんどアイマスw なんのイベントなんだろうなぁ… 続きを読む

本日のDDR

コミケも終わったので久しぶりにゲーセンでDDR! ようやく木星を踏むことができました! 終わったあとは徳島駅前のラーメン屋に行ってみることに。 今まで食べた徳島ラーメンの中ではかなり上位に来るかも? … 続きを読む