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



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

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

・構成プロパティ−>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に続けて msvcrt.lib User32.libを追記
[特定のライブラリの無視]LIBC,LIBCD,LIBCMT,LIBCMTDに書換えてみました。


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



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


以下はリリースでビルドする際のコード修正例です。デバッグでビルドする際も似たような感じ。
エラーだけ直して警告は放置しちゃってます。アタイはワルだからね。

.\hud_bitmapnumericdisplay.cpp(159) : error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
159行目に以下の赤い部分の部分の記述を挿入。
if( bStart || digit > 0 || pos <= pow(10.0f,numSigDigits-1) )


また、以下の個所はヤバそうなので修正しておきます。
SpectatorGUI.cpp(ソリューションエクスプローラのgame_controlsフォルダの下にあります)の498行目。
memset( playerName, 0x0, sizeof( playerName ) * sizeof( wchar_t ) );
上記を以下のように書き換える。
memset( playerName, 0x0, sizeof( playerName ));


更に以下の変更を加えてください。これを入れないと終了時に不正なエラーを吐いて死にました。
情報元はVERCフォーラムのEJ氏です。
stringpool.cppの73行目。
	pszNew = strdup( pszValue );
上記を以下のように書き換える。
// by EJ(VERC forum)
#ifndef _DEBUG
	pszNew = (char*) malloc(sizeof(char) * (strlen(pszValue) + 1)); // Use Valve's malloc instead of strdup
	strcpy(pszNew, pszValue);
#else
	pszNew = strdup( pszValue ); // Use Valve's debug strdup
#endif

c_baseflex.cppの921行目。
	g_flexcontroller[g_numflexcontrollers++] = strdup( szName );
上記を以下のように書き換える。
// by EJ(VERC forum)
#ifndef _DEBUG
	g_flexcontroller[g_numflexcontrollers] = (char*) malloc(sizeof(char) * (strlen(szName) + 1)); //Use V's malloc instead of strdup
	strcpy(g_flexcontroller[g_numflexcontrollers++], szName);
#else
	g_flexcontroller[g_numflexcontrollers++] = strdup( szName ); //Use V's debug strdup
#endif



・client.dllビルド完了

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

(´・ω・`)つ次へ