Данная статья является частью проекта "Осваиваем SDK".
* * * * *
В общем статья о том как редактировать и компилировать SDK, не имея Visual Studio 2003 (Visual C++ 7). Использована, а по большему счету вольно переведена статья Kael'я в свою очередь основанной на посте DaveMcW. Почти все ссылки и изображения взяты из статьи и ведут на файлы выложенные Kael'ем.
Подготовка.
Первым делом стоит отключить атрибут "Только чтение" для всех файлов SDK. Обычно она уже отключена, но может и потребоваться принудительное отключение.
Выделяем папку CvGameCoreDLL -> Свойства -> Снимаем галочку с "Только чтение"->Выбираем "К этой папке и ко всем вложенным папкам и файлам".
Установка:
1. Скачиваем VC++ Toolkit 2003 и устанавливаем его. 31.5 МБ
2. Скачиваем 3 библиотеки и кидаем в C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib. Это msvcrt.lib, msvcrtd.lib, и msvcprt.lib (ЗЕРКАЛО: http://www.redforce.civfanatics.ru/sdk/lib.rar).
3. Скачиваем Platform SDK. также можно использовать internet explorer, для автоматической установки (рекомендуется). ОСТОРОЖНО она скачивает все нужное ей с инета, у меня папка в итоге заняла 878 МБ. Преимущественно для обладателей анлима.
4. Скачиваем CodeBlocks тот что "without compiler" и устанавливаем его.
Настройка
5. При первом запуске CodeBlocks, появиться список компиляторов. Выберите Microsoft Visual C++ Toolkit и щелкните Set As Default. И OK.
6. В CodeBlocks переходите в меню Settings->Compiler. Выбираете закладку "Directories" и добавляете папки компиляторов, в зависимости от того куда вы их установили, лучше ставить по умолчанию.
(В моем случае Диск:\Program Files\Microsoft Visual C++ Toolkit 2003\inсludе там уже было.)Код:C:\Program Files\Microsoft Visual C++ Toolkit 2003\inсludе C:\Program Files\Microsoft Platform SDK\inсludе
В закладке Directories/Linker добавляете следующие папки.
Код:C:\Program Files\Microsoft Visual C++ Toolkit 2003\Lib C:\Program Files\Microsoft Platform SDK\Lib
7. Открываете в CodeBlocks файл \CvGameCoreDLL\CvGameCoreDLL.vcproj . В появляющихся меню выбираем Microsoft Visual C++ Toolkit 2003, а в следующем меню
также соглашаемся. (OK) (Тут пока не очень понял достаточно лишь Final Release Win32 выбирать, или желательно на всех галочки оставить).
8. Далее меню Project->Build options->Final Release Win32. На закладке "Compiler Flags" снимаем галочку с "Produce debugging symbols [/Zi]". (У меня её там не было, но это все равно почти не помогло -> см далее.)
В закладке "Other options", изменяем EHsc на /EHsc, и удаляем /ZI
На закладке "Linker" добавляем новую библиотеку, называя её user32. Там же удаляете в linker option "/pdb:Final Release\CvGameCoreDLL.pdb" и "/pdb:Final Debug Win32\CvGameCoreDLL_DEBUG.pdb" Жмете OK.
9. Далее удаляем в основном окне программы, Workspace/CvGameCoreDLL/Resources/CvGameCoreDLL.rc - Выбираем "Remove from project".
10. File->Save project. Это создаст CodeBlocks project (.cbp), который можно будет окрыть в будущем.
11. Выбираете Build target -> Final Release Win32. После этого нажимаете значок Build
И в итоге получаете \..\Assets\CvGameCoreDLL.dll ! Уряаа!
Хальк Юсдаль, в очередной раз ты делаешь очень важную работу!
По хорошему, перевод данной статьи надо было сделать еще пару лет назад, но ни у кого, в т.ч. и у меня, не доходили до этого руки. Теперь, благодаря тебе, этот существенный пробел ликвидирован!
В будущем было бы неплохо добавить пару примеров/заданий для начинающих sdk-моддеров: как увеличить лимит игроков, как увеличить городской радиус и тп.
PS. Выделил в отдельную тему, чтобы сразу бросалась в глаза.
<div class='quotetop'>Цитата(NeverMind * 19.9.2009, 12:31) [snapback]307616[/snapback]</div>А он вообще молодец!Хальк Юсдаль, в очередной раз ты делаешь очень важную работу!
[/b]
Спасибо.
А насчет примеров, их не в первый пост, не хочется править, но добавлю. Например в этот.
Для изменения максимального числа игроков в файле CvDefines.h найти.
[code]#define
Добрый день!
В процессе установки, настройки и попыток освоения столкнулся с такой проблемой - "fatal error C1083 - windows.h not found"
Решение нашел тут, но возникла новая проблема - "fatal error LNK1112: module machine type 'IA64' conflicts with target machine type 'X86'" и вот ее я уже не знаю как решить. Пожалуйста, подскажите!
Добрый день.
Могу пока только посоветовать проверить, не было ли пропущенных в процессе установки пунктов. В частности был ли установлен VC++ Toolkit 2003?
<div class='quotetop'>Цитата(Хальк Юсдаль * 22.9.2009, 15:06) [snapback]307957[/snapback]</div>Был установлен. К тому же, иначе бы, думаю, я не мог бы его выбрать в списке compiler'ов.Добрый день.
Могу пока только посоветовать проверить, не было ли пропущенных в процессе установки пунктов. В частности был ли установлен VC++ Toolkit 2003?[/b]
Пробую переставить...возможно, что-то где-то криво встало. Не могли бы вы мне подсказать, какую именно версию SDK ставили вы (из предложенного здесь)?
У меня процессор AMD64x2, раз на него ругаются, может я не то скачал....
Хотя странно, из скачиваемых инсталляторов только PSDK-x86 запускается; PSDK-amd64 и PSDK-ia64 отказываются запускаться, пишут, что к win32 они не имеют отношения....
Я скачивал прямо по ссылке, с автозапуском установки.
http://kael.civfanatics.net/files/PSDK-x86.exe
Но у меня процессор старый Celeron. x32 вероятнее всего. Так как Windows XP x86. (Или как там по правильному)
<div class='quotetop'>Цитата(Хальк Юсдаль * 23.9.2009, 14:41) [snapback]308077[/snapback]</div>Я так же...и Windows XP у меня...странно. Ладно, попробую еще раз!Я скачивал прямо по ссылке, с автозапуском установки.
http://kael.civfanatics.net/files/PSDK-x86.exe
Но у меня процессор старый Celeron. x32 вероятнее всего. Так как Windows XP x86. (Или как там по правильному)
[/b]
Так очередной глупый вопрос...
Так как с MS Visual Studio 2008 Pro я раньше не работал, да впрочем я не работал вообще с VSками.
Вообщем, можно ли открыть в VS dll файл и как это сделать ?
Просто в питоне можно компилить и декомпилить. Тут же поидее так же это возможно ?
Если есть знающие люди поясните пожалуйста
Не важно... что было сказано или написано... все это от незнания и неумения выбрать верное среди многого...
Мои взгляды на то какой должна быть глобальная стратегия
Вобщето DLL это компонент приложения и прямым способом его менять нельзя (ну если ты супермегавундеркинд то можеш попробовать - любой текстовый редактор подойдет ). VS 2008 это кампилятор, но для цывы он не подходит - нужен VS 2003. Кампилятор может создавать новый DLL из SDK. SDK - это набор файлов написаных на языке С++. Изменения делаются в SDK.
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Ну насчет файлов С++, VS2008 pro + SP1 нормально работает с файлами цивы...
Почему не подходит то ?
Просто меня волновал вопрос dll, т.к. эта область для меня новая, то мне хотелось бы узнать как можно открывать и редактировать файлы такого типа...
Не важно... что было сказано или написано... все это от незнания и неумения выбрать верное среди многого...
Мои взгляды на то какой должна быть глобальная стратегия
<div class='quotetop'>Цитата</div>Почему именно сказать не могу, мало сам знаю, но бытует мнение, что на VS2005, можно редактировать с шаманством, а VS2008 не подойдет вообще. А основано оно не на пустом месте Так что придется либо 2003 устанавливать, либо методом описанным в этой теме пользоваться.Ну насчет файлов С++, VS2008 pro + SP1 нормально работает с файлами цивы...Почему не подходит то ?Просто меня волновал вопрос dll, т.к. эта область для меня новая, то мне хотелось бы узнать как можно открывать и редактировать файлы такого типа...[/b]
Ну просто реально не пойму в чем проблема, если есть плагины ?
Там же в файлах только текст программ (скрипты по сути), в чем проблема то ?
В компиляции ? В сохранении файлов ?
Епт, да при установке же сразу спрашивает какие модули подключать, там есть VS2003, VS2005, VSTeam...
Поясните в чем особенность, из-за которой можно только 2003 пользоватся ?
Не важно... что было сказано или написано... все это от незнания и неумения выбрать верное среди многого...
Мои взгляды на то какой должна быть глобальная стратегия
<div class='quotetop'>Цитата(Gesse * 25.9.2009, 23:13) [snapback]308505[/snapback]</div>В правилах С++ ,в разных версиях они разные. У меня VS 2008 не компилирует SDK, выдает кучу ошибок и предупреждений.Поясните в чем особенность, из-за которой можно только 2003 пользоватся ?[/b]
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Возникает ошибка:
CvDLLPython.obj:: error LNK2019: unresolved external symbol "void __cdecl boost::throw_exception(class exception const &)" (?throw_exception[на]boost[на][на]YAXABVexception[на][на][на]Z) referenced in function "public: __thiscall boost::detail::shared_count::shared_count<class CyCity *,struct boost:ython::converter::shared_ptr_deleter>(class CyCity *,struct boost:ython::converter::shared_ptr_deleter)" (??$?0PAVCyCity[на][на]Ushared_ptr_deleter[на]converter[на]python[на]boost[на][на][на]shared_count[на]detail[на]boost[на][на]QAE[на]PAVCyCity[на][на]Ushared_ptr_deleter[на]converter[на]pyth
..\Assets\CvGameCoreDLL.dll:: fatal error LNK1120: 1 unresolved externals
:: === Build finished: 2 errors, 0 warnings ===
Все описанные действия выполнил по шагам. Версии софта скачены с указанных ресурсов, тока кодеблок мой старенький стоит, бьюлд от 9-го июля 2007-го, с всобаченными вх-ми. SDK скачан с зеркала: http://www.3ddownloads.com/Strategy/Civili..._SDK_source.zip.
Либу user32 взял из стандартной поставки masm32 (больше не было нигде ).
Без неё таких ругачки вылазило три штуки, ещё на две функции. С этой либой две прошли, третья вот не хочет чё-то Может дело в версии user32? И где тогда поискать честный вариант библиотечки?
Подскажите, пожалуйста, если кто сталкивался или знает чё делать, чтоб собрать без правки исходников?
С уважением, Волод.
Опа, вопрос снят, всё собралось
Если кто вдруг столкнётся с такой проблемой: у меня она решилась установкой кодеблока. Версия, в которой я пытался собрать прежде, не была установлена в системе (в реестр может чё-то нужное пишет, я **) и в ней по дефолту стоял GCC, а мелкомягкий я устанавливал только для сборки конкретного проекта SDK. Скачал инсталлятор, поставил, выбрал мелгомягкий по дефолоту и всё отлично собралось.
С уважением, Волод.
Для первого раза решил скампилировать DLL из оригинальных файлов SDK. Сделал все по инструкции, полученый DLL вышел на ~1.5 Mb больше оригинального (>6 Mb).
У всех такие большие DLLки получаются?
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
<div class='quotetop'>Цитата</div>У меня да. Чтобы размер был как в оригинальном, то стоит поставить галочку на Minimize space, насчет необходимости убирания галочки с Maximize speed не уверен.Для первого раза решил скампилировать DLL из оригинальных файлов SDK. Сделал все по инструкции, полученый DLL вышел на ~1.5 Mb больше оригинального (>6 Mb).
У всех такие большие DLLки получаются?[/b]