| Автор | Сообщение | 
|---|
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 05.05.10 00:40:38 |  |  | 
 |  | Здравствуйте. Сразу извиняюсь, если создал топик не там, где следует - более подходящей ветки не нашёл. Теперь по делу. Не так давно вздумалось мне внести в ZDoom небольшие изменения. Скачал сорцы (v. 2.4.1 (r2125)) с сайта проекта, подкорректировал что требовалось, а вот с компиляцией возникла проблема. На сайте сказано, что необходим либо Visual C++ v. 8.0, либо GCC. Так как про GCC ничего хорошего не пишут, решил остановиться на MSVC. На трёх форумах для кодеров безуспешно просил бинарники - оказалось, что нынешние программисты не могут даже файлы переписать. Плюнул и две недели качал весь дистриб целиком. К моему разочарованию, выдранные бинарники работать наотрез отказались по причине DLL hell. Мочить manifest в CL.exe бестолку - запускается, но в runtime падает. Указанной в манифесте версии (8.0.50608.0) MSVCR80.dll (почему то отличной от версии самого CL.exe) в дистрибутиве не оказалось и в и-нете не нашёл . Короче, плюнул ещё раз и надёргал файлов из Visual C++ 7.0. Протестил. Консольный и гуёвый Hello World'ы собираются на ура. Но вот при попытке компиляции ZDoom'овых сорцов вылезла куча ошибок, причём даже синтаксических. Если кто хорошо петрит в сях (сам Delphi юзаю) и возился с ZDoom'ом, проконсультируйте пожалуйста. |  |  | 
 | 
|  |  | 
| Nil = Colonel =
 
 |  |  | 2558 | 
  Doom Rate: 2.3
 
 | |  Отправлено: 05.05.10 00:54:40 |  |  | 
 |  | скачай бесплатный Microsoft Visual c++ express 2008 (2010) с сайта microsoft. Проект здума для 2005 студии. |  |  | 
 | 
| | 
| 1 | 2 | 1 |  |  | 
 |  | 
| StasBFG[iddqd] -= DoomGod =-
 
  Doom Rate: 2.1
 
 | |  Отправлено: 05.05.10 00:58:13 |  |  | 
 |  | Тут как бы всё расписано при компиляции с нуля, у меня всё работает (хотя сам на си даже хеллоуворлд не умею писать). |  |  | 
 | 
| | 
| 1 | 2 | 1 |  |  | 
 |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 05.05.10 01:42:19 |  |  | 
 |  | А в проге для скачки Microsoft Visual C++ 2008 Express Edition можно пофайлово выбирать или как? И вот ещё что. Я сейчас её (vcsetup.exe) качнул и это оказался самораспаковывающийся инсталлятор с кучей всякой требухи внутри. Он по ходу срачу мне на диске разведёт. |  |  | 
 | 
|  |  | 
| BeeWen [B0S] - 1st Lieutenant -
 
 |  |  | 1500 | 
  Doom Rate: 1.42
 
 | |  Отправлено: 05.05.10 02:21:02 |  |  | 
 |  |  	  | FalseMaster : |  	  | Указанной в манифесте версии (8.0.50608.0) MSVCR80.dll (почему то отличной от версии самого CL.exe) в дистрибутиве не оказалось и в и-нете не нашёл | 
 FalseMaster
 Когда то сохранял эти библиотеки впрок, глянь, мож пригодиться.
 Ссылка
 |  |  | 
 | 
|  |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 05.05.10 03:27:36 |  |  | 
 |  | BeeWen, спасибо конечно за попытку помочь, но в архиве MSVCR32.dll версии 8.00.50727.42, пробовал с ней - дохлый номер. Я встречался уже с таким явлением - скорее всего в процессе инсталляции бинарники патчатся. В общем с 2005-ой версией всё ясно, фтопку её. Так, я сейчас заменил компилер etc на версию 7.1, осталось 2 ошибки: 
 p_3dfloors.h(48) : error C3177: '' : can only specify underlying type for managed enum
 i_main.cpp(895) : error C3861: '_get_pgmptr': identifier not found, even with argument-dependent lookup
 
 В чём тут соль? Как это дело лечится?
 
 Кстати, насчёт asm-файлов. Есть два подкаталога, содержащих оные: "asm_ia32" и "asm_x86_64". Я скомпилил из первого с выходным форматом "win32" - это правильно?
 |  |  | 
 | 
|  |  | 
| Nil = Colonel =
 
 |  |  | 2558 | 
  Doom Rate: 2.3
 
 | |  Отправлено: 05.05.10 07:27:25 |  |  | 
 |  | FalseMaster? Лечится полным вычищением всего этого добра с ЖД и установкой заново. Если ты думаешь, что можно собрать компилятор по кусочкам, то ты неправ - в состав компилятора входят в том числе отладочные библиотеки(в том числе объектные, которые ты замаешся искать), не говоря уже о прочих нужных утилитах, которые сменили синтаксис входных аргументов. http://www.microsoft.com/express/Downloads/
 |  |  | 
 | 
| | 
| 1 | 2 | 1 |  |  | 
 |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 06.05.10 02:11:13 |  |  | 
 |  |  	  | Nil : |  	  | Лечится полным вычищением всего этого добра с ЖД и установкой заново. | 
 Я не пользуюсь софтом, требующим установки, ибо по моему скромному мнению - это вредоносное ПО, засирающее винт, реестр и что самое главное, мой моск, ибо я почти полностью контролирую систему.
 
  	  | Nil : |  	  | Если ты думаешь, что можно собрать компилятор по кусочкам, то ты неправ ... | 
 Я не думаю, а знаю. И давай не будем спорить на эту тему - я по горло сыт перепирательствами с нубьём на программерских форумах. Тем более ты всё равно не сможешь реально аргументировать такие категоричные заявления, а я смогу - т.е. если дальше прилюдно будешь выставлять меня дураком, я не поленюсь засунуть на файлообменник рабочую версию консольного компилятора из Delphi (изначально 1.5GB) вместе с заголовочниками (ессно без исходников) и примером программы общим весом не более 2MB и дать ссылку. Тебе это надо - самому выглядеть ламером? Так что, как говорил кот Леопольд, - "давайте жить дружно", лады? Отладочные lib'ы (с постфиксом "d") в release-сборке на хрен не нужны, и уж тем более не имеют никакого отношения к составу компилятора (CL.exe + C1.dll + C1xx.dll + C2.dll) - их использует линковщик (Link.exe), да и то при явном указании.
 Насчёт "замучаешься искать", ты прав только касательно версий 8.0 (2005) и выше, а вот версии 7.1 (2003) хоть жопой ешь, а SDK у меня и так в наличии.
 
  	  | Nil : |  	  | не говоря уже о прочих нужных утилитах, которые сменили синтаксис входных аргументов | 
 А вот здесь, хотелось бы поподробнее - что ещё за входные аргументы, каков их синтаксис, как и какими утилитами меняется. Если действительно хочешь помочь, дай ссылочку. Ещё весьма интересно было бы почитать о структуре vcproj-файлов, особенно о соответствии настроек компилера/линкера ключам командной строки. Ещё больше интересует структура конфигурационных файлов "CL.exe.config" и "Link.exe.config" - они у меня почти пустые, а это не есть gut.
 
 P.S. Sorry за резкость, но просто задолбали уже бездоказательные высказывания о моей якобы неправоте и указки что да как мне делать.
 
 P.P.S. С этим - "p_3dfloors.h(48) : error C3177: '' : can only specify underlying type for managed enum" уже разобрался (слава MSDN
  ). |  |  | 
 | 
|  |  | 
| Nil = Colonel =
 
 |  |  | 2558 | 
  Doom Rate: 2.3
 
 | |  Отправлено: 06.05.10 07:05:05 |  |  | 
 |  | FalseMaster Поступая так, ты выглядишь ламером, потому-что нарушил лицсоглашение. Буду надеятся, что все твои произведения, программы и прочий труд народ будет использовать таким-же образом, а ты умрёшь от голода. А всё потому, что можно было-бы взять официально бесплатный Free Pascal и уже его ужимать абсолютно свободно. Насчёт изменений - изменились ключи, теперь некоторые из них не делают ничего и надо пользоватся другими ключами. Кроме того, я сталкивался с тем, что компилятор из Platform SDK не уживался с VS2008 - всегда писал ошибку нераспознанных аргументов.
 И всё-таки VS надо устанавливать, иначе получишь неработоспособную среду, и отдельно кучку компиляторов. Не вижу в таком подходе ничего рационального, под VS2008(бесплатной) уже два года программирую и всем доволен.
 И да, хватит разводить флейм. Не нравится как отвечают - иди в другое место.
 |  |  | 
 | 
| | 
| 1 | 2 | 1 |  |  | 
 |  | 
| c4tnt = Sergeant =
 
 |  |  | 458 | 
  Doom Rate: 2
 
 | |  Отправлено: 06.05.10 23:55:23 |  |  | 
 |  | FalseMaster 
 Касательно первого - может синтаксис не тот? Сам такие enum-ы не юзал, но везде пишут enum class : _anything_ вроде
 
 Касательно второго - http://msdn.microsoft.com/en-us/library/24awhcba(VS.80).aspx
 
 Общий рецепт - открыть файл и посмотреть, что написано в строке с ошибкой. Потом - гугль...
  |  |  | 
 | 
|  |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 07.05.10 01:56:26 |  |  | 
 |  |  	  | Nil : |  	  | Поступая так, ты выглядишь ламером, потому-что нарушил лицсоглашение. ... | 
 Ну зачем же так сурово. Я ведь не профессиональный программист - так для души пописываю иногда какую нибудь мелочёвку.
 
  	  | c4tnt : |  	  | Общий рецепт - открыть файл и посмотреть, что написано в строке с ошибкой. Потом - гугль | 
 Да я и сам уже это понял, просто чё-то заторопился сначала. В общем с компилером, линкером и vcproj-файлом я вроде-как разобрался. Сижу компилю объектники помаленьку. Но думаю вопросы у меня ещё возникнут - уж очень проект запутанный. Буду надеяться, что тема не испарится, пока я копаюсь
  |  |  | 
 | 
|  |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 12.05.10 01:02:00 |  |  | 
 |  | Итак, вот что у меня получилось ... ну или не получилось. После долгих мучений всё скомпилилось и слинковалось без ошибок, правда с одним ворнингом. Но вот незадача - после запуска дело доходит только до инициализации дисплея, после чего прога вылетает с access violation (на мгновение окно всё же появляется). В чём проблема непонятно. У кого-нибудь такое было? Неужто исходники с багами? Мля, столько времени коту под хвост.  |  |  | 
 | 
|  |  | 
| Arsenikum Chief Petty Officer
 
 |  |  | 1054 | 
  Doom Rate: 1.62
 
 | |  Отправлено: 12.05.10 01:16:29 |  |  | 
 |  | У меня в Visual Studio все скомпилировалось без проблем, компилил правда 2.2.0. Может, ты в исходниках пару звездочек  добавил, чтоб ошибки пофиксить. Может быть, ты в файлы настроек линка залез и подковырнул там кое-чего. О чем ворнинг, кстати?
 |  |  | 
 | 
|  |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 12.05.10 01:51:14 |  |  | 
 |  | Ворнинг вот такой: autostart.obj : warning LNK4229: invalid directive '/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'' encountered; ignored
 видимо линкер из 7.1 такое не ест. Но я не думаю, что в этом дело, ведь диалоги то появляются.
 
 Ключи линкера и компилятора я два раза перепроверял - всё как и в файле проекта. А если б я что-нибудь закаментил, то ошибки бы полезли.
 |  |  | 
 | 
|  |  | 
| entryway -= DoomGod =-
 
 |  |  | 3010 | 
 Doom Rate: 2.45
 
 | |  Отправлено: 12.05.10 12:54:06 |  |  | 
 |  |  	  | FalseMaster : |  	  | После долгих мучений всё скомпилилось и слинковалось без ошибок, правда с одним ворнингом. Но вот незадача - после запуска дело доходит только до инициализации дисплея, после чего прога вылетает с access violation | 
 У меня такое было неоднократно. Помогал незначительный фикс кода инициализации видеорежима. Конкретней уже не скажу, не помню (что-то связанное с двойной инициализацией). Мне кажется пробема ушла после обновления дров на видео, хотя не уверен, что именно из-за этого.
 |  |  | 
 | 
| | 
| 3 | 1 | 1 |  |  | 
 |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 14.05.10 05:14:34 |  |  | 
 |  |  	  | entryway : |  	  | У меня такое было неоднократно. Помогал незначительный фикс кода инициализации видеорежима. Конкретней уже не скажу, не помню (что-то связанное с двойной инициализацией). | 
 Ах как жаль, как жаль. А я так ждал, надеялся и верил ...
  Значит всё-таки я угадал - сорцы немного левые, ведь оригинальный то exe'шник нормально работает и соответственно дрова здесь ни причём. Эх ну да ладно, как говорится, - "Если гора не идёт к Магомеду, ну её на х...". Мне если честно, изменения то в коде нужны микроскопические (хотя изначально идей было больше, да видно не судьба). Именно, нужно fps поубавить, а то у меня температура проца (68 - 72 °C) превышает ту, которая в спецификации указана (68 °C). Не могу я сейчас компом рисковать (кризис), если камень зажарю, можно смело в петлю лезть. У меня ZDoom выдаёт  81 - 92 fps и при этом t проца превышает специфицируемую на 0 - 4 °C.  Если применять "cl_capfps" (35 fps), то t в пределах 59 °C, но в этом случае картинка меняется не плавно, а как-бы рывками (хоть и мелкими, но всё равно раздражает). vid_vsync - не вариант, ибо с ним вообще подтормаживать начинает. Я вот прикинул, что если б fps был 50 - 60, то в этом случае у меня и t проца была бы в норме и не дёргалось бы ничего. В общем я задумал следующее: изменить интервал рендеринга при "cl_capfps" и нашёл в модуле "r_main.cpp" нужный, как мне казалось участок кода: 
 
т.е. я думал, что "r_TicFrac" - это тот самый интервал и если вместо "FRACUNIT" (65536) присвоить ему подобранное методом научного тыка значение, то всё будет в ажуре. После фиаско с перекомпиляцией я, как призывал вождь мирового пролетариата, пошёл другим путёмr_TicFrac = I_GetTimeFrac (&r_FrameTime);
 if (cl_capfps || r_NoInterpolate)
 {
 r_TicFrac = FRACUNIT;
 }
 
  , а конкретно - патчил ZDoom.exe hex-редактором, ковыряясь в asm-листинге. Разочарованию моему не было предела, когда оказалось, что варьирование значения "r_TicFrac" не приводит ни к каким изменениям в поведении программы. 
 Ну, довольно лирики
  . Entryway, я так понял, ты в потрохах ZDoom'овских немало копался. Не подскажешь хотя бы ориентировочно, где искать код, отвечающий за fps. К остальным прочитавшим, обладающим инфой по теме аналогичная просьба. А то я чё-то уже так замучался со всем этим делом, что сил никаких нет. |  |  | 
 | 
|  |  | 
| Arsenikum Chief Petty Officer
 
 |  |  | 1054 | 
  Doom Rate: 1.62
 
 | |  Отправлено: 14.05.10 10:02:46 |  |  | 
 |  | Кроме fps на работу проца влияет куча других параметров, начиная от настроек графики (сколько и чего рисовать), кончая уровнем Дума, т.е. картой, на которой ты играешь (поведение скольких монстров обрабатывать, сколько скриптов обсчитывать и т.п.). 
 И вообще, что ты привязался в Zdoom? Есть и другие, менее прожорливые порты. Например, PrBoom с настройками по минимуму или вообще Vanilia.
 |  |  | 
 | 
|  |  | 
| FalseMaster Marine 1st class
 
 |  |  | 72 | 
 Doom Rate: 5.54
 
 | |  Отправлено: 15.05.10 00:31:10 |  |  | 
 |  |  	  | entryway : |  	  | В TryRunTics в самом начале. | 
 По ходу оно самое, может поколдую как-нибудь, но уже нашёл более радикальное решение - сбавил частоту проца в BIOS (всё гениальное просто
  ).  fps от 51 до 76, а температура не поднимается выше 56 °C - то, что доктор прописал. Буду теперь усиленно отрываться после долгого воздержания. Но по любому спасибо всем и entryway в частности за посильную помощь. |  |  | 
 | 
|  |  |