Форум программистов, компьютерный форум CyberForum.ru

Различные версии с++ в виде VS и наборы исходников - C++

Войти
Регистрация
Восстановить пароль
 
Dr_Quake
Заблокирован
06.06.2013, 21:39     Различные версии с++ в виде VS и наборы исходников #1
Я как абсолютный нелюбитель с++ итд столкнулся со следующей забавной штукой - есть исходники ID Software - quake, quake2 и их форков на тех же движках. В них уровень предельный - VC2005, собирается со стандартом C99(это на примере Q2) и не выше.

Суть идеи - прикрутить wrapper музыки из wave-alac-ape-flac файлов, но тут начинается реальный гемор, потому, что любой компонент реализующий обёртки к этому, вроде того же irrKlang, написан под более новый стандарт(=диалект как я понимаю) и банально не собирается если не править кучу по всему проекту старому адаптируя его к реалиям VS на котором писался компонент, наоборот аналогично. Я бы прикрутил свой готовый либ в котором надо вызывать то по сути пару функций, но там надо передавать строки, а либ на delphi, тоже ещё тот гемор.

Убил уже два дня - плюнул - сделал __asm и более-менее работает, но через жопу же! Пока что я склоняюсь к двум вариантам:

1) Дописать на асме
2) Написать обёртку dsound.h и музыку переделать в raw чтобы обёртки кроме 30 строк для вывода и хэндлера DirectSound не было.

По поводу остального - нет, я знаю winapi и asm x86 достаточно неплохо, но в видах C++ вообще никак, с различиями в компиляторах и диалектах(ну и стандартах ясное дело) уже много раз сталкивался.

В общем что посоветуете по поводу данной проблемы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 21:39     Различные версии с++ в виде VS и наборы исходников
Посмотрите здесь:

C++ Поиск подходящих исходников
Не получается откомпилировать из исходников. C++
Вытащить функцию распаковки файла из исходников UPX C++
Где можно найти много качественных исходников Ha C/C++ ? C++
Как собрать проект из исходников для COM порта? C++
Собрать программу из некоторых исходников C++
Научите собирать статическую библиотеку из исходников C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
06.06.2013, 21:48     Различные версии с++ в виде VS и наборы исходников #2
А можно пример того, что не собирается? И нужно уточнить - код именно под майкрософтовскую IDE заточен или просто в VC2005 он собирается?

Добавлено через 1 минуту
в GNU'шном компилятор через коммандную строку можно указывать стандарт, в котором следует компилировать. Можно погуглить, может и в студийном компилире есть, просто я им не пользуюсь.
Dr_Quake
Заблокирован
06.06.2013, 21:58  [ТС]     Различные версии с++ в виде VS и наборы исходников #3
А чего пример то - вот сходу весь код, при попытке #include irrklang - ругается на namespace и очень много чего ещё, если скрутить стандарт на новый - не собирается соответственно основной проект quake2. Крутится ровно так же - но лучше культурно в свойствах проекта чтобы не пересекаться. Ясное дело код писался в MSVC(изначально в каком - не знаю), собираю под 2008, собирается корректно.

Переписываю в cd_win.cpp соответственно, игра ещё требует dx sdk, последний от 2006 подходит, если лень качать - могу выложить 10M хидеров от него, всё что требуется, даже либы не нужны.

http://www.microsoft.com/en-us/downl....aspx?id=10990

исходники q2
http://www.markshan.com/thesinraven/quake_II_v.3.21.htm

аудиолиб соответственно
http://www.ambiera.com/irrklang/downloads.html

Добавлено через 5 минут
P.S. Естественно я писал ещё и врапперы winmm.dll, но именно с ID так не очень - надо брать и ручками пересчитывать номера треков по адресу, там не по трекам играется, а через TMSF. В тех же Turok 1-2 спокойно и так катит перехват mciSendCommand/CommandString на проигрывание треков, тут же ещё надо фейк ответа mciOpen формировать, инфо о диске, setformat итд.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
06.06.2013, 22:11     Различные версии с++ в виде VS и наборы исходников #4
Посмотрел архив с исходниками q2, понравилось про линукс
The linux version should be buildable, but we haven't
tested it for the release.
особенно
should be buildable


Ну проблема понятна, тут просто смена стандарта не поможет.
Цитата Сообщение от Dr_Quake Посмотреть сообщение
не собирается если не править кучу по всему проекту
Вообще как бы стандарты совместимы, за некоторым исключением. Поэтому могу посоветовать выявить всевозможные ошибки компиляции, предположительно они все будут почти одинаковые по одной и той же причине. И таких разных причин наберется немного, навскидку могу сказать штук 10 плюс/минус 5. Вот, а после того как поймешь, что везде нужно вносить одинаковые правки, можно написать скрипт, который это все сделает.
Решение конечно не ахти какое, но я бы так сделал, если бы "приспичело"
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5667 / 3146 / 357
Регистрация: 29.11.2010
Сообщений: 8,420
06.06.2013, 22:34     Различные версии с++ в виде VS и наборы исходников #5
Kastaneda, студия C99 не поддерживает, C90 - край.

Собственно лишь из-за этого и приходится забывать про loop initialization, комменты в стиле С++, объявление, перемешанные с инициализацией и прочие плюшки.
HighPredator
 Аватар для HighPredator
5385 / 1768 / 323
Регистрация: 10.12.2010
Сообщений: 5,233
Записей в блоге: 3
06.06.2013, 22:44     Различные версии с++ в виде VS и наборы исходников #6
У вас в верхнем посте указан источник ваших проблем: весь движок Irrlicht, а именно его составной частью является IrrKlang, написан на C++, а IdTech2 - на Си. Вы два языка пытаетесь скрестить без дополнительных манипуляций.
Dr_Quake
Заблокирован
07.06.2013, 01:12  [ТС]     Различные версии с++ в виде VS и наборы исходников #7
Кстати да, я этот момент пропустил видимо. То-то думал что что-то не так с ошибками объявления переменных по ходу, а ведь это основное отличие с этой строны...

Но ведь по идее в таком раскладе достаточно поднять проект - чистый C подхватится в C++ без особых проблем в теории, но не работает же.

Добавлено через 1 час 25 минут
P.S. Нафиг, в гробу я видел C++, врапперы рулят.

Код
	__asm {
		cmp dword ptr proc_lib,0
        jnz libok
		push name_lib;
		call dword ptr LoadLibraryA;
		mov dword ptr proc_lib,eax;
libok:
		cmp proc_play,0;
		jnz proc_ok;
		push name_play;
		push proc_lib;
		call dword ptr GetProcAddress;
		mov dword ptr proc_play,eax;
proc_ok:
		push basedir;
		push dword ptr track;
		call dword ptr proc_play;
	};
Jupiter
07.06.2013, 01:42
  #8

Не по теме:

Цитата Сообщение от Dr_Quake Посмотреть сообщение
в гробу я видел C++
и вам туда же, вас никто тут не заставляет, тем не менее вы привносите сюда свой негатив

Dr_Quake
Заблокирован
07.06.2013, 02:06  [ТС]     Различные версии с++ в виде VS и наборы исходников #9
По мне так только позитив, я там ещё много чего поправлю, да и патчер до меня 3.21 многое поправил, в частности тот самый адский крашащий баг с opengl extensions string limit 255,скоро выложу сборку. Тебе видимо не понять по возрасту...
MrGluck
07.06.2013, 02:13
  #10

Не по теме:

Цитата Сообщение от Dr_Quake Посмотреть сообщение
Тебе видимо не понять по возрасту...
Смотрите не рассыпьтесь по ходу выкладывания сборки

Dr_Quake
07.06.2013, 02:15  [ТС]
  #11

Не по теме:

Эй, полегче, я же не смотрю на то, что в этом форуме вчерашние студенты(другим уже неинтересно) решают детские задачки по информатике в основном первично вместо грамотных гайдов и FAQ...

HighPredator
 Аватар для HighPredator
5385 / 1768 / 323
Регистрация: 10.12.2010
Сообщений: 5,233
Записей в блоге: 3
07.06.2013, 10:14     Различные версии с++ в виде VS и наборы исходников #12
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Но ведь по идее в таком раскладе достаточно поднять проект - чистый C подхватится в C++ без особых проблем в теории
Это только теория. Без дополнительных манипуляций она как правило не работает. Наиболее яркий пример - выделение памяти malloc-ами. Так что думайте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 17:29     Различные версии с++ в виде VS и наборы исходников
Еще ссылки по теме:

Организация исходников C++
C++ Как отключить dll от exe. Исходников нет
Проверить, состоят ли наборы из одних и тех же слов C++
C++ Как собрать проект из исходников
C++ Есть ли где коллекция исходников простеньких программ ?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Dr_Quake
Заблокирован
07.06.2013, 17:29  [ТС]     Различные версии с++ в виде VS и наборы исходников #13
Да это уже всё равно, там подгонять тонны кода в обратную сторону - я асмом прикрутил готовый свой либ, заодно и char *somevar передаёт корректно для указания fs_gamedir принимая с той стороны PAnsiChar, ради чего всё и делалось. Тему можно закрыть.

Добавлено через 3 часа 3 минуты
http://yadi.sk/d/uHhdaDob5aNjA
Yandex
Объявления
07.06.2013, 17:29     Различные версии с++ в виде VS и наборы исходников
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru