Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› Помогите подправить C++ исходники. |
Посл.ответ | Сообщение |
|
Создано: 16 января 2011 04:12 · Личное сообщение · #1 Здравствуйте! Прошу помощь потому, что в Си и С++ я полный ноль и не знаю даже синтаксиса. Не могу понять принципа работы который заложен в исходниках иначе попытался бы повторить это на Delphi. Существует проблема с работой старых игрушек на nvidia картах. По английски это звучит так: Starting with the Geforce 8XXX series nVidia introduced a bug in their DirectDraw implementation. This can be seen in most games as black boxes around sprites. DLL исходники которой доступны Моя проблема в том, что нужная мне программа использует DirectDrawCreateEx, а эта функция в библиотеке не экспортируется. С автором проекта связаться пытался - он молчит... Если это не очень сложно - прошу добавить DirectDrawCreateEx и скомпеллировать длл. Если сложно - буду признателен за объяснения того, как это работает... ![]() |
|
Создано: 16 января 2011 04:51 · Поправил: reversecode · Личное сообщение · #2 ничего не понял кто мешает взять уже скомпилеными? ![]() |
|
Создано: 16 января 2011 05:01 · Поправил: Evol · Личное сообщение · #3 |
|
Создано: 16 января 2011 05:12 · Поправил: reversecode · Личное сообщение · #4 ну если так то быстрее будет найти функцию Code:
в dll и добавить два символа Ex, там выравнивание 4 пустых байта, так что влезет Code:
add есть другая проблема, это все не спасет и не поможет, нужно вникать в программу, поскольку DirectDrawCreate и DirectDrawCreateEx две разные функции и у них разные параметры Code:
нужно еще один параметр "REFIID iid" ввести, он через стек, поэтому только компилять( (нет под рукой компилятора) тогда main.cpp, такие фиксы Code:
Code:
Code:
add2 щщит, там еще полно мест для исправления ![]() если надо могу пофиксить, только скомпилить не смогу ![]() |
|
Создано: 16 января 2011 05:54 · Поправил: Evol · Личное сообщение · #5 reversecode, ну попробуй пофиксить. вроде компилиться у меня. add: что-то не вижу что там еще фиксить. ToBad, попробуй, может так пойдет ![]() ![]() add2: ToBad пишет: прошу добавить DirectDrawCreateEx нужно добавить, или можно заменить DirectDrawCreate ? ![]() |
|
Создано: 16 января 2011 06:20 · Личное сообщение · #6 |
|
Создано: 16 января 2011 06:32 · Личное сообщение · #7 |
|
Создано: 16 января 2011 15:13 · Личное сообщение · #8 |
|
Создано: 16 января 2011 17:49 · Поправил: Evol · Личное сообщение · #9 ToBad, значит нам нужно просто перенаправить вызов DirectDrawEnumerateExA, вроде должно быть достаточно этого кода для пренаправления: Code:
Можешь попробовать, будет ли работать ![]() ![]() ![]() |
|
Создано: 16 января 2011 18:26 · Личное сообщение · #10 |
|
Создано: 16 января 2011 21:27 · Личное сообщение · #11 |
|
Создано: 16 января 2011 22:53 · Поправил: Evol · Личное сообщение · #12 |
|
Создано: 17 января 2011 00:29 · Личное сообщение · #13 |
![]() |
eXeL@B —› Программирование —› Помогите подправить C++ исходники. |