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

本日の鳥。 苺プリンがそれなりに繋がりました!!! さらにMAX300をやって目出度く全100越え!!! さて、今回はどこまで伸ばせるか!? SABER WING はPS2版で覚えてきたおかげで無事A… 続きを読む

DDR×MOTHER 合同プチオフ開催

MOTHER方面で知り合って、現在はDDRのライバル登録をさせていただいているNAYOさんとプチオフをやってきました!!! NAYOさんとは以前、確定申告で梅田のゲーセンに寄った際に偶然お会いしていた… 続きを読む

本日のDDR たまには鬼でも

今日もサービス休出だるだる。 もう付き合いきれん・・・ と言うわけで20時ぐらいに見捨てて、ラウンドワン北心斎橋へ。 ウォーミングアップのセイバーSP楽でやっと鳥出た!!! この曲は判定がサッパリわか… 続きを読む

本日のDDR MAX300SMMM鬼 ようやくクリア

ROUND1心斎橋店がまたまた配置換え。 最近行く度に微妙に配置が変わっています。 前よりはマシになったかな・・・? と思ったら落とし穴が!!! 斜め向かいにプリクラがあるのですがそれのフラッシュが眩… 続きを読む

ピピンアットマーク

焼肉食べ放題のために東淀川まで来たので、ラウンドワン東淀川店のカラオケに入ってみました。 そこで見たものは!!! 伝説のピピンアットマーク!!! 全く売れなかったあのピピンアットマークです!!! 当時… 続きを読む