Автор | Сообщение |
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 = I_GetTimeFrac (&r_FrameTime);
if (cl_capfps || r_NoInterpolate)
{
r_TicFrac = FRACUNIT;
}
т.е. я думал, что "r_TicFrac" - это тот самый интервал и если вместо "FRACUNIT" (65536) присвоить ему подобранное методом научного тыка значение, то всё будет в ажуре. После фиаско с перекомпиляцией я, как призывал вождь мирового пролетариата, пошёл другим путём , а конкретно - патчил 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 в частности за посильную помощь. | |
|
| |