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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dr_Quake
Заблокирован
#1

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

06.06.2013, 21:39. Просмотров 521. Ответов 12
Метки нет (Все метки)

Я как абсолютный нелюбитель с++ итд столкнулся со следующей забавной штукой - есть исходники 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++ вообще никак, с различиями в компиляторах и диалектах(ну и стандартах ясное дело) уже много раз сталкивался.

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

Разработать функцию, генерирующую все возможные наборы значений n логических переменных в виде массива целых 0 - C++
Разработать функцию, генерирующую все возможные наборы значений n логических переменных в виде массива целых 0 или 1. Например, для n = 3...

Различные наборы графики для одного приложения - Windows Phone
Добрый день! Никогда не разрабатывал под Windows Phone, но тут довелось. И столкнулся с непониманием одной вещи. Есть одно приложение. Для...

Различные версии программы - C#
Народ просветите меня по одному вопросу если можете! Хочу сделать прогу! допустим что прога нужна как с русским интерфейсом так и с...

Вывести все различные представления числа N в виде суммы натуральных чисел - Pascal ABC
Программа должна вывести все различные представления натурального числа N в виде суммы натуральных чисел. В каждой строке выводятся...

Найти сколько раз различные значения встречаются в массиве и вывести в упорядоченном виде - Free Pascal
Дано:массив целых положительных чисел значение которых не превышает числа 8. Найти сколько раз различные значения встречаются в массиве и...

Вывести на экран все возможные различные способы представления числа в виде суммы натуральных чисел - Turbo Pascal
Дано натуральное число N. Требуется получить и вывести на экран все возможные различные способы представления этого числа в виде суммы...

12
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,273
Записей в блоге: 2
Завершенные тесты: 1
06.06.2013, 21:48 #2
А можно пример того, что не собирается? И нужно уточнить - код именно под майкрософтовскую IDE заточен или просто в VC2005 он собирается?

Добавлено через 1 минуту
в GNU'шном компилятор через коммандную строку можно указывать стандарт, в котором следует компилировать. Можно погуглить, может и в студийном компилире есть, просто я им не пользуюсь.
0
Dr_Quake
Заблокирован
06.06.2013, 21:58  [ТС] #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 итд.
0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,273
Записей в блоге: 2
Завершенные тесты: 1
06.06.2013, 22:11 #4
Посмотрел архив с исходниками q2, понравилось про линукс
The linux version should be buildable, but we haven't
tested it for the release.
особенно
should be buildable


Ну проблема понятна, тут просто смена стандарта не поможет.
Цитата Сообщение от Dr_Quake Посмотреть сообщение
не собирается если не править кучу по всему проекту
Вообще как бы стандарты совместимы, за некоторым исключением. Поэтому могу посоветовать выявить всевозможные ошибки компиляции, предположительно они все будут почти одинаковые по одной и той же причине. И таких разных причин наберется немного, навскидку могу сказать штук 10 плюс/минус 5. Вот, а после того как поймешь, что везде нужно вносить одинаковые правки, можно написать скрипт, который это все сделает.
Решение конечно не ахти какое, но я бы так сделал, если бы "приспичело"
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
06.06.2013, 22:34 #5
Kastaneda, студия C99 не поддерживает, C90 - край.

Собственно лишь из-за этого и приходится забывать про loop initialization, комменты в стиле С++, объявление, перемешанные с инициализацией и прочие плюшки.
0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,468
Записей в блоге: 2
06.06.2013, 22:44 #6
У вас в верхнем посте указан источник ваших проблем: весь движок Irrlicht, а именно его составной частью является IrrKlang, написан на C++, а IdTech2 - на Си. Вы два языка пытаетесь скрестить без дополнительных манипуляций.
1
Dr_Quake
Заблокирован
07.06.2013, 01:12  [ТС] #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;
	};
0
Jupiter
07.06.2013, 01:42
  #8

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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

0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,468
Записей в блоге: 2
07.06.2013, 10:14 #12
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Но ведь по идее в таком раскладе достаточно поднять проект - чистый C подхватится в C++ без особых проблем в теории
Это только теория. Без дополнительных манипуляций она как правило не работает. Наиболее яркий пример - выделение памяти malloc-ами. Так что думайте.
0
Dr_Quake
Заблокирован
07.06.2013, 17:29  [ТС] #13
Да это уже всё равно, там подгонять тонны кода в обратную сторону - я асмом прикрутил готовый свой либ, заодно и char *somevar передаёт корректно для указания fs_gamedir принимая с той стороны PAnsiChar, ради чего всё и делалось. Тему можно закрыть.

Добавлено через 3 часа 3 минуты
http://yadi.sk/d/uHhdaDob5aNjA
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 17:29
Привет! Вот еще темы с ответами:

Составить алгоритм решения ребуса РАДАР = (Р + А + Д)4 (различные буквы обозначают различные цифры, старшая — не 0). - Turbo Pascal
27. Составить алгоритм решения ребуса РАДАР = (Р + А + Д)4 (различные буквы обозначают различные цифры, старшая — не 0).

Составить алгоритм решения ребуса РАДАР=(Р+А+Д)^4 (различные буквы означают различные цифры, старшая - не 0). - C#
я знаю что на С++ это должно быть так... void main () { char g ; CharToOem ("\nРешение ребуса РАДАР=(Р+А+Д)^4\n", g); ...

На какой версии(максим. доступной) можно запустить проект написанный на версии 6? - C++ Builder
Здравствуйте. Есть проект написанный с помощью C++ Builder 6. Требуется поддержка Unicode. Какая версия Builder может помочь в решении...

Как для web-версии и мобильной версии поставить разные картинки - HTML, CSS
Всем добрый вечер! Кто знает, подскажите: мне необходимо для вебверсии и мобильной версии поставить разные картинки.


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
07.06.2013, 17:29
Ответ Создать тему
Опции темы

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