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

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

関連記事

Stepmaniaの操作形態をアーケードと同じにしよう!その3

選択ボタンの制作もいよいよ大詰めを迎えました。 しかし最後の一仕事、コンパネ画像が残っています。これも本家っぽくしてみます。 ちなみにメインシリーズの筐体は3種類ほどあるのですが、今回はもっとも見慣れ… 続きを読む

リリカルマジカル8開催!

リリマジも8回目。 映画公開後ということで盛り上がる予感! てなわけでセットアップ完了!!! 今回もメタルっぽいパネルです。 そして、今回の当方制作曲は PHANTOM MINDS Don&#8217… 続きを読む

DDR SuperNOVA2 町田ロケテ

今日から東京出張です。 しかし!今日は移動のみと言うことで町田のロケテに行くことができるのだ!!! 張り切って9時出社!とっとこPCを鞄に入れて即出発! 品川着! PC持ち出し申請経路やセキュリティの… 続きを読む

本日のDDR

久しぶりにDP鬼鯖やったら序盤はgdgd過ぎでしたが、滝はいつもよりうまくいってちょっとだけSTREAM更新! ちと勿体無いw それにしてもDP鬼鯖の出だしの踏みにくさは異常。 あれが綺麗に入れば一気… 続きを読む

no image

ブログ強化

当サイト内に設置されている他の掲示板に比べてこのブログは構造が複雑なため、スパム対策が後手に回っていましたが、最近ついに標的になったらしく、スパム投稿が増えてきたのでこの機会(?)に対応することにしま… 続きを読む