GTA Vice City => Программирование => Тема начата: Sektor от Октября 24, 2013, 04:06:39 pm
Название: Прототипы функций - Их вызов по адресу
Отправлено: Sektor от Октября 24, 2013, 04:06:39 pm
Иногда бывает, что у не которых программистов есть старые версии Visual C++. По этому в отсутствие оператора auto, могут возникнуть проблемы при компиляции. Для этого рассмотрим пример
1. Вариант (Современный способ вызова)
Код: C++
auto _spawnCarAtPlayerLocation =(void(__cdecl*)(signedint modelIndex))0x04AE8F0;
Теперь дам важный совет, лучше использовать самые новейшие версии MSVC. Так как там шире возможности и лучше оптимизация кода. Следовательно ваш код будет проще, а компилируемые приложения будут работать значительно быстрей.
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: xanser от Марта 09, 2014, 10:53:05 am
Получится ли такой же фокус с прототипами, содержащими __thiscall* ?
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: Sektor от Марта 09, 2014, 05:31:33 pm
Да, можно. Пример метода скинь, покажу как...
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: xanser от Марта 10, 2014, 07:04:35 am
Например, из последних уроков
Код: C++
auto CText__locate =(wchar_t*(__thiscall*)(CText *, char*entryName))0x0584F30;
Код: C++
auto CTexture__draw =(void(__thiscall*)(CTexture *, RwRect *posInfo, RwRGBA *v1_color))0x00578710;
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: Sektor от Марта 10, 2014, 03:35:27 pm
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: mike43842 от Марта 10, 2014, 04:25:09 pm
проще бы было новую студию поставить ;D
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: xanser от Марта 10, 2014, 07:57:42 pm
Возможно даже не проще, а единственный выход. Новая студия-то есть, просто некоторые исходники написаны еще в 2006 году и на новой студии уже не компилируются, что казалось бы странным, хотя может и не странно, а просто изменились некоторые стандарты. Исходники не все мои, поэтому особой радости их переписывать пока нет. Все бы хорошо, да только после:
error C4234: nonstandard extension used :'__thiscall' keyword reserved for future use
Это для 6-й студии, с которой все начиналось, где-то попадалось что такое заработает, начиная только с 8-й. Но может быть тут проблема еще с самим классом CText, может в старых версиях его так просто нельзя объявлять, а нужно подробно расписать? Или все, это тупик?
Название: Re: Прототипы функций - Их вызов по адресу
Отправлено: Sektor от Марта 10, 2014, 08:22:13 pm
Честно не знаю про старые студии, ну по пробуй прототип сделать:
Код: C++
class CText;
Не рекомендую старые студии, там оптимизатор куда хуже и качество такого кода, естественно ниже...