|
|
|
Канал Elite »
Канал проекта Elite 3 под Direct 3D: «Компиляция» |
|
|
LG.BALUKATION
88 EGP
 Репутация: 27 Сообщения: 179 Откуда: Saint-Petersburg Зарегистрирован: 26.02.2006
 |
|
Помнится, кто-то спрашивал как это чудо скомпилить... А и впрямь оказалось есть подводные камни.
Лично у меня есть лишь восьмая "студия", и то болванил когда-то на всякий, видимо случай и настал.
Первая проблема заключается в том, что нужен NASM (а ему кстати нужны пути к сырцам без пробелов, так что смотрим куда сырцы кладём . Ну, это не проблема - сливаем с сырцфоржнета последнюю версию под винды, переименовываем nasmw.exe в nasm.exe. Лично я просто добавил каталог с nasm'ом в переменную path, хотя есть шанс что хватит просто в студии добавить к путям запускаемых файлов.
Потом надо ещё DirectX SDK. Само это чудо весит много и что из себя представляет даже не знаю. А вот либы и инклуды от него весят всего три метра - я у знакомого и стянул. Это добро прописывается в пути студии.
Потом открываем проект - студия хочет его конвертировать в новый формат. После конфертации, проект как бы открылся.
Наивно жмём F7 (build), но ничего не собирается. Для начала высматриваем самое явное - например в файлах иногда просто забыто обявление переменной, т. е. вместо "int i" идёт только "i". Чтож, фиксим сами
Но есть вещи, которые пофиксить не так просто :-?
Код: |
\win\object3d\object3d.cpp(34) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int |
Но строка 34 - это открывающаяся фигурная скобка:
Код: |
//--------------------------------------------------------------------------------------------
// Имя: Create()
// Описание: Создание объекта из файла
//--------------------------------------------------------------------------------------------
Object3D::Create(char *filename)
{ /* это строка 34 */ |
Исходники каждый день по SVN обновляю, но скомпилить решился только сегодня, т. к. не было DX инклудов и библиотек. Товарищи, у которых получилось это скомпилить, скажите что я сделал не так или что я ещё не сделал?
_________________ Zwei Drachen betrachten einander |
|
|
DreamZzz
430 EGP
   Рейтинг канала: 7(580) Репутация: 90 Сообщения: 642 Откуда: Мурманск Зарегистрирован: 15.04.2006
 |
|
LG.BALUKATION : |
вместо "int i" идёт только "i"
|
Эт ты где такое нашел?
Я добавлял полностью настроенный проектный файл для VC6, Andis добавил проектный файл для VC7. Что там восьмой творит не знаю, так что тут к сожалению помочь не смогу.
_________________ Космос лучше всего исследован научными фантастами |
|
|
LG.BALUKATION
88 EGP
 Репутация: 27 Сообщения: 179 Откуда: Saint-Petersburg Зарегистрирован: 26.02.2006
 |
|
Еслиб только я - у знакомого таже фигня и об этом я узнал сначала от него, а потм уж и сам нарвался.
Напрмер файл MD2Model.cpp строчка 96
Код: |
for( i = 0; i < modelheader.num_tris; i++ ) |
Причём это в копии, не тронутой студией
Добавлено:
Специально слазал глянуть сырцы по SVN через вэб - там тоже самое :-?
_________________ Zwei Drachen betrachten einander |
|
|
DreamZzz
430 EGP
   Рейтинг канала: 7(580) Репутация: 90 Сообщения: 642 Откуда: Мурманск Зарегистрирован: 15.04.2006
 |
|
А, это старый прикол VC6
Если мы сделаем
for( int i = 0;...
то потом
for( int i = 0;...
уже не покатит, так как i уже считается объявленной.
зря я конечно так, надо было учесть, что не только VC6 будут компилить, надо было сразу объявление i выносить.
_________________ Космос лучше всего исследован научными фантастами |
|
|
Andis
100 EGP
 Репутация: 27 Сообщения: 85 Откуда: Зеленоград Зарегистрирован: 25.07.2003
 |
|
int Object3D::Create(char *filename)
{ /* это строка 34 */
это должно помочь, я компилил и под 8 и под 7 студию. 6 увы нету.
Но я на днях обновлю код там этого уже не будет, слегка подпеределал.
А вообще если возникнут вопросы стучи в асю.
|
|
|
LG.BALUKATION
88 EGP
 Репутация: 27 Сообщения: 179 Откуда: Saint-Petersburg Зарегистрирован: 26.02.2006
 |
|
Спасибо, помогло!
Нда, и впрямь какая-то странная студия получается - нас учили что если переменная обьявляется в заголовке цикла, она существует только в цикле... Хотя мне так в своё время и не удалось её найти, а 7 (2003) отпугнула своей здоровой стопкой дисков - вот и остановился на 8 (одна DVD-R
ИМХХО уж лучше в форуме - ведь если каждый захочет скомпилить и постучит в асю...
_________________ Zwei Drachen betrachten einander |
|
|
Andis
100 EGP
 Репутация: 27 Сообщения: 85 Откуда: Зеленоград Зарегистрирован: 25.07.2003
 |
|
LG.BALUKATION : |
ИМХХО уж лучше в форуме - ведь если каждый захочет скомпилить и постучит в асю...
|
конечно лучше, просто у меня днем нет доступа к web ресурсам, зато аська работает. а в онлайне я практически всегда когда нет проблем с инетом
|
|
|
LG.BALUKATION
88 EGP
 Репутация: 27 Сообщения: 179 Откуда: Saint-Petersburg Зарегистрирован: 26.02.2006
 |
|
Былоб ещё интересно узнать о структуре каталога исходников.
Просто есть некие "branches" и "tags", в котопых нет никаких файлов кроме .svn (как я понял это системная директория, она есть в каждом каталоге и отвечает за синхронизацию с сырцами в инете).
А ещё есть каталог "trunk", в котором собстно и лежит всё самое интересное.
/branches - "ветви" (на ум приходят только ветви FreeBSD - тут тоже так?)
/tags - "тэги" (?)
/trunk - само дерево исходников
/trunk/build - сюда собирается рабочая копия
/trunk/build/MODELS - внешние модели (в подкатагогах по номерам)
/trunk/build/textures - внешние текстуры (тож с какими-то номерами)
/trunk/doc - документация и какие-то исходники (видимо примеры и утилиты)
/trunk/win - часть кода, специфичная для виндовой версии движка (наследие jjffe)
/trunk/win32 - лично у меня пусто (предположение почему см. ниже)
/trunk/win32db - сюда студия сваливает всякий хлам при компиляции. Как я пнимаю прошлый каталгн для старой версии, этот для 7 и выше. Вот только есть-ли смысл держать эт временные каталги в репозитарии?
Вообще былоб интересно почитать по-русски о внутреннем устройстве jjffe и самих Элит.
Кстати, рам уже есть перевод статьи о структуре обьектов - может замените им англицкую версию в /thunk/doc или просто приложите?
_________________ Zwei Drachen betrachten einander |
|
|
DreamZzz
430 EGP
   Рейтинг канала: 7(580) Репутация: 90 Сообщения: 642 Откуда: Мурманск Зарегистрирован: 15.04.2006
 |
|
Была использована рекомендованная структура каталогов SVN.
/branches - ветви проекта.
/tags - без понятия.
/trunk/win32 - объектные файлы релизной конфигурации проекта.
/trunk/win32db - объектные файлы дебажной конфигурации проекта.
Чтоб почитать по русски, надо переводить. А потом еще и дополнять, так как постоянно появляется новая информация.
Перевод статьи об объектах не полный, так что пока выкладывать статью в репозиторий смысла не вижу.
Сдалал отдельную тему для вопросов по структуре данных FFE.
_________________ Космос лучше всего исследован научными фантастами |
|
|
RedLord
|
|
Здравствуйте ! подскажите что делать (я не програмист) пытаюсь скомпилировать 63svn скачал ,поставил ВС6 ,подключил библиотеки директа ,насм пробую компилить выдает такие ошибки
пара таких -
\trunk\win\gfx.cpp(1986) : error C2374: 'i' : redefinition; multiple initialization
\trunk\win\gfx.cpp(1950) : see declaration of 'i'
( ... for(int i=0;i<ucount;i++) { ...)
такие -
trunk\win\md2\md2model.cpp(227) : error C2664: 'Lock' : cannot convert parameter 3 from 'unsigned char ** ' to 'void ** '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
(...if(FAILED(d3d_vb->Lock(sizeof(CUSTOMVERTEX)*200000,sizeof(CUSTOMVERTEX)*GetTriangleCount()*3,(BYTE**)&Vertices,0))) return 0; ...)
и остальное
w32sound.cpp
\trunk\win\w32sound.cpp(136) : error C2065: 'sprintf_s' : undeclared identifier
\trunk\win\w32sound.cpp(281) : error C2065: 'strcat_s' : undeclared identifier
w32video.cpp
\trunk\win\w32video.cpp(497) : error C2065: 'sprintf_s' : undeclared identifier
\trunk\win\w32video.cpp(505) : error C2374: 'i' : redefinition; multiple initialization
\trunk\win\w32video.cpp(496) : see declaration of 'i'
Если нетрудно помогите хочется очень скомпилить и посмотреть
|
|
|
Rouniy
|
|
как можно присоедениться к разработке и где взять исходники ?
|
|
|
LG.BALUKATION
88 EGP
 Репутация: 27 Сообщения: 179 Откуда: Saint-Petersburg Зарегистрирован: 26.02.2006
 |
|
RedLord, про остальное не знаю, но первая проблема напомнила то, из-за чего я и создавал эту тему. Попробуйте другую версию Visual C++.
Rouniy, сам я за проектом уже давно не слежу, но когда-то брал исходники отсюда https://opensvn.csie.org/FFED3D/(SubVersioN). Судя по тамошней статистике, проект обновлялся последний раз пару месяцев назат. Из инструментов когда-то надо было Visual C++ 6 или новее (я собирал в 2005), DirectX SDK и NASM под винду.
_________________ Zwei Drachen betrachten einander |
|
|
Crimson
560 EGP
    Рейтинг канала: 1(3) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
В шестой (и по-моему седьмой) студии был баг. Переменная, объявленная как for(int i ...), по спецификации C++ считается объявленной внутри блока цикла. В шестерке она считается объявленной вне цикла. Соответственно, два цикла подряд, объявляющие i, вызовут ошибку "повторное объявление" в MSVS6 (хотя по спецификации все как раз правильно). MSVS8 (она же MSVS2005) компилирует согласно спецификации, благодаря чему ломается код, написанный под MSVS6.
Судя по ошибкам у RedLord, текущую версию нужно собирать таки уже в MSVS2005.
Последний раз редактировалось: Crimson (11:07 08-08-2008), всего редактировалось 1 раз |
|
|
LG.BALUKATION
88 EGP
 Репутация: 27 Сообщения: 179 Откуда: Saint-Petersburg Зарегистрирован: 26.02.2006
 |
|
ИМХО это не багбыл, а просто старая версия стандарта. В седьмой (AKA .net AKA 2003) этого уже не было.
Кстати попробовал на работе собирать - поставил VS2005, DX SDK от этого лета, NASM последний... Так оно не находит заголовки DirectMusic - причём я их в инклудах DXSDK тоже не нашёл :-? Я что-то не то скачал с мелкомягких, или терь музыку тож выкинули из DirectX. Подскажите пожалста, с каким SDK оно точно собирается.
_________________ Zwei Drachen betrachten einander |
|
|
Crimson
560 EGP
    Рейтинг канала: 1(3) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
http://msdn.microsoft.com/en-us/directx/aa937789.aspx : |
The DirectX SDK no longer contains the following components:
* Direct3D8 and all of the earlier versions
* Direct3D RM
* DirectAnimation
* DirectMusic
* DirectInput7 and all of the earlier versions
* DirectPlay
* DirectPlayVoice
* DirectX8-era HRESULT conversion routines
* Managed DirectX samples and documentation
Developers wanting to use these components will need to download the August 2007 DirectX SDK, available from MSDN.
The REDIST and Web DXSetup have not been not be affected by these removals.
|
|
|
|
|
|
|
Канал Elite ->
Канал проекта Elite 3 под Direct 3D: «Компиляция» |
|