Compiling under VS2008:ru

From Valve Developer Community
Revision as of 15:18, 13 December 2008 by Proplayer96 (talk | contribs) (Установка DirectX SDK (для шейдеров))

Jump to: navigation, search

В этом туториале вы научитесь как использовать Source SDK для компилирования в Visual Studio 2008 and Visual C++ Express 2008. Сначала создайте свой мод.

Note:Для работы не надо устанавливать Microsoft Platform SDK, все нужные файлы включены в VC2008.
Note:You will still encounter occasional "precompiled header skipped" warnings after following this guide. Don't worry, they're harmless!

Обновление до Service Pack 1

Если вы установили VS2008 до Августа 2008 года, то вам надо поставить SP1. Service pack установится автоматически через Windows Update, но вы можете это сделать сами. Для начала скачайте это:

Service Pack 1 исправляет ошибки в отчетах и ошибки при работе с базой данных Intellisense.

Обновление файла проекта

Visual Studio обновит файл проекта. Если вы будете работать в прошлых версиях VS, то сделайте резервную копию файла проекта.

Tip:Для удобства вы можете переименовать файл проекта с whatever_2005.sln на whatever_2008.sln.

Исправление падения при компиляции

VS2008 "падает" на строке 348 (OB код) в файле client/c_vguiscreen.cpp (отчет об ошибке здесь):

dist = c_x / tan( M_PI * scaled_fov / 360.0 );	

Замените это на:

float dist_denom = tan( M_PI * scaled_fov / 360.0f ); 	 
dist = c_x / dist_denom;

Исправление ошибки при копировании файлов

Правой кнопкой > Свойства проектов Server и Client. Вам надо сделать это для конфигураций Release и Debug; четыре раза всего.

  1. Выберите Configuration Properties > Custom Build Step.
  2. Нажмите на Command Line, затем нажмите на кнопку ... расположенная справа от поля ввода.
  3. Замените содержимое диалога на первый блок кода (под Command Line).
  4. Нажмите на Outputs и вставте второй блок кода (под Outputs).

Warning: Незабудте заменить "client" на "server" в проекте Server и <YOUR MOD PATH> замените на оригинальное месторасположение мода.

Command Line

if exist "<YOUR MOD PATH>\bin\client.dll" attrib -r "<YOUR MOD PATH>\bin\client.dll"
copy "$(TargetDir)"client.dll "<YOUR MOD PATH>\bin\"
if exist "<YOUR MOD PATH>\bin\client.pdb" attrib -r "<YOUR MOD PATH>\bin\client.pdb"
if exist "$(TargetDir)"client.pdb copy "$(TargetDir)"client.pdb "<YOUR MOD PATH>\bin\"

Outputs

<YOUR MOD PATH>\bin\client.dll;<YOUR MOD PATH>\bin\client.pdb


Если ошибки не исправлены вы не получите бинарный файл в папке bin вашего мода в steam, удалите мод и перекомпилируйте или создйте заново свой проект.

Исправление ошибки при компиляции в режиме debug

Правой кнопкой > Properties на Server и Client проектах. Проверьте что вы используйте debug режим копиляции:

  1. Измените Configuration Properties > C/C++ > General > Debug Information Format на Program Database (/Zi).
  2. Измените Configuration Properties > C/C++ > Code Generation > Runtime Library на Multi-threaded (/MT).
  3. Измените Configuration Properties > Linker > Input > Ignore Specific Library на libc;libcd;libcmtd.

Теперь надо закомментировать функцию на строке 727 (OB код) файла server/memoverride.cpp:

void __cdecl _invalid_parameter_noinfo(void)
{
    Assert(0);
}

Запомните! Запускайте мод с параметром -allowdebug

Исправление ошибки с пропущенными символами

Если вы заметили пропущенные символы в: ConVar_Register вам нужно добавить tier3.lib в папку Link Libraries.

Отключить /Wp64

Если вы видите предупреждения об опции Wp64. ВЫ можете проигнорировать это, но если вам не нравится то сделайте следующее: Правой кнопкой > Properties проектов Server и Client, затем измените Configuration Properties > C/C++ > General > Detect 64-bit Portability Issues на No.

Исправлении ошибки "missing CTeamTrainWatcher"

В многопользовательском режиме Orange Box у проекта client нет некоторых файлов. Компиляция произойдет, но карта не загрузится. Однопользовательские моды не реагируют на это.

Solution:

  • В Visual Studio, нажмите правой кнопкой на Source Files Folder в проекте Client
  • Выберите add existing
  • Выберите c_team_train_watcher.h и c_team_train_watcher.cpp

Смотрите Error on map: "Client missing DT class CTeamTrainWatcher" для большей информации об этой проблеме.

Установка DirectX SDK (для шейдеров)

Чтобы создать новый шейдер вам нужен MS DirectX SDK (March 2008). После установки следуйте инструкции для внедрения в проект.

  1. Выберите Options: Projects and Solutions - VC++ Directories
  2. Выберите "Include files" и добавьте "...\Microsoft DirectX SDK (March 2008)\Include"
  3. Вsберите "Library files" и добавьте "...\Microsoft DirectX SDK (March 2008)\Lib\x86"
  4. В Solution Explorer нажмите правой кнопкой на 'client_hl2', и выберите Properties.
  5. В окне свойств client_hl2, выберите Linker - Input
  6. Выберите 'Additional Properties' и нажмите на '...'
  7. Если тут есть данные, пропустите линию, и введите ' user32.lib ' без кавычек.
  8. Повторите эти шаги для сервера.