第三章(´・ω・`)おばあちゃん、server.dll構築するわよ☆



・hlプロジェクト設定の修正

hlプロジェクトの変換後の設定ではビルドができません。 ソリューションエクスプローラからhlプロジェクトを右クリックしてプロパティを選び、 プロパティページを開きます。そして以下の例(リリース)のように設定を変更してください。

・構成プロパティ−>C/C++−>コード生成
[ランタイムライブラリ][]を選ぶ


・構成プロパティ−>C/C++−>言語
[wchar_t をビルトイン型として扱う][for ループスコープの強制準拠]共に「いいえ」へ変更


・構成プロパティ−>C/C++−>コマンドライン
[追加のオプション]内に以下の記述を追加
/D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NON_CONFORMING_SWPRINTFS" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_CRTIMP=" /D "_CONST_RETURN="


・構成プロパティ−>リンカ−>入力
[追加の依存ファイル]で既存のwinmm.libに続けて User32.libを追記


・構成プロパティ−>リンカ−>コマンドライン
[追加のオプション]内に以下の記述を追加
/FORCE:MULTIPLE



・hlプロジェクトを手直し
ソリューションエクスプローラからhlプロジェクトを右クリックしてビルドを選ぶと、 とりあえずコンパイルエラーが出ると思います。


以下はリリースでビルドする際のコード修正例です。デバッグでビルドする際も似たような感じ。
第二章でclient.dll周りのコード修正をせずにいきなりこっちをビルドすると当然もっとエラーが出るでしょうね。
エラーだけ直して警告は放置しちゃってます。アタイはワルだからね。

.\hl2_dll\npc_BaseZombie.cpp(160) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
160行目に以下の赤い部分の記述を挿入。
static int s_iAngryZombies = 0;

.\TemplateEntities.cpp(298) : error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
298行目に以下の赤い部分の部分の記述を挿入。
int iMax = pow(10.0f, (signed)(strlen(ENTITYIO_FIXUP_STRING)-1));	// -1 for the &

.\baseentity.cpp(2317) : error C3861: 'tolower': 識別子が見つかりませんでした
.\baseentity.cpp(2317) : error C3861: 'tolower': 識別子が見つかりませんでした
58行目(#include "vphysics/friction.h" の次)に以下の行を挿入。
#include <ctype.h>


・server.dllビルド完了

ハイ、できたアルよ。
========== ビルド: 1 正常終了、0 失敗、0 更新、0 スキップ ==========

(´・ω・`)つ次へ