MOD/作成情報/CvGameCoreDLL.dllの作り方
- MOD/作成情報/CvGameCoreDLL.dllの作り方 [#p81ecb84]
概要
Visual C++ 2008 Express Editionを使ってCvGameCoreDLL.dllを作る方法を説明します。Civ4 BtS 3.13 日本語版を使用。
参考URL
- 第9回CivilizationIVMOD解説講座‐ニコニコ動画(ββ)
- この文書はほぼこの動画をテキスト化したものです。動画の作者の人ありがとう。
- 第10回CivilizationIVMOD解説講座‐ニコニコ動画(ββ)
- BtS 3.13 用SDKの入手法
- Installing and using the SDK - Civilization Fanatics' Forums
- Civfanaticsのスレッド
- Civilization Fanatics' Forums - Downloads Database - Makefile/Instructions BTS 3.17 SDK / Debugging
- Visual C++ 2008でSDKを開発する方法の解説。このページを書いてから存在に気付いたぜ……
Visual C++ 2008 Express Edition のインストール
http://www.microsoft.com/japan/msdn/vstudio/Express/
上記URLからダウンロードしてセットアップを実行。
Visual C++ Toolkit 2003 のインストール
http://kael.civfanatics.net/files/VCToolkitSetup.exe
マルチスレッドライブラリのダウンロード
- http://kael.civfanatics.net/files/msvcrt.lib
- http://kael.civfanatics.net/files/msvcrtd.lib
- http://kael.civfanatics.net/files/msvcprt.lib
C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib に上記の3ファイルを置く。
Microsoft R Windows Server 2003 R2 Platform SDK のインストール
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB
SDKとmakefileの入手
CvGameCoreDLL.dllのソースコードとビルドに必要なライブラリがSDKとしてBtS英語版には同梱されています。しかし日本語版には含まれていないので、どこからか探してくる必要があります。今回はCiv4:BTS Unofficial Patchのリポジトリに入っている修正前のSDKを使います。
http://civ4btspatch.svn.sourceforge.net/viewvc/civ4btspatch/CvGameCoreDLL/trunk/?pathrev=2
ページ下部の「Download GNU tarball」からダウンロードして解凍。
パッチ付属のSDKを使う場合、makefileが含まれていないため、この辺から別途makefileを入手し、CvGameCoreDLL直下に放り込む。
TOOLKIT=D:/Programme/Microsoft Visual C++ Toolkit 2003/
PSDK=D:/Programme/Microsoft Platform SDK
のパスは自分の環境に合わせて修正すること。
プロジェクトの作成
Visual C++ 2008 を起動してプロジェクトを新規作成。
左ツリー「プロジェクトの種類」の「全般」を選択、画面右テンプレートで「メイクファイル プロジェクト」を選択。画面下のプロジェクト名と保存場所は適宜。「ソリューションのディレクトリを作成」はとりあえずオフに。
ウィザードで設定。
- デバッグ構成の設定
- ビルドコマンドライン
- nmake Debug
- 消去コマンド
- nmake clean_Debug
- リリース構成の設定
- デバック構成と同じ
- off
- ビルドコマンドライン
- nmake Final_Release
- 消去コマンド
- nmake clean_Final_Release
入力後「完了」で設定終了。
ダウンロードしたSDKのファイルをすべてプロジェクトのフォルダにコピー
ビルド
ビルドの対象をReleaseにして
開始!
文字化けでエラー。CvGameTextMgr.cpp 2092行をとりあえずコメントアウトして凌ぐ。
再びビルドして無事成功。[プロジェクトフォルダ]\Final_Release\CvGameCoreDLL.dll が目的のdllです。MODS\[MOD名]\Assets に置けばOK。
動作確認
CvUnit::canMove() で常に true を返すようにしてみる。
できた CvGameCoreDLL.dll を My Documents\My Games\Beyond the Sword(J)\MODS\DllTest\Assets にコピーして civilization を起動、MOD DllTest をロード。
いくらでも移動できるようになりました。作成したdllが働いていることが分かります。