Задать вопрос
Gamemaker
@Gamemaker

Как вызвать thiscall-метод по адресу из dll?

Из dll, написаной на с++, я получаю адрес метода по имени. Прототип метода прилагается. Но вызвать этот метод я не могу, так как он имеет соглашение о вызове __thiscall. (При попытке вызова происходит краш, что и не удивительно). Описание класса у меня есть, экземпляр создать могу, как мне можно вызвать этот метод, но чтобы вместо своей реализации выполнялась библиотечная?

typedef int (__thiscall *LoadMap)(char const *,int);
pDll=LoadLibrary("MindPower3D_D8R.dll");
loadmapfunction=(LoadMap)GetProcAddress(hMyDll,"?Load@MPMap@@QAEHPBDH@Z");
  • Вопрос задан
  • 2339 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@raincons
А первый параметр (char const *) это this?
Может, стоит импортировать и вызвать конструктор этого класса из dll (на случай виртуальных методов)?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Gamemaker
@Gamemaker Автор вопроса
решение "в лоб": в классе, для которово импортируется метод, создать метод-пустышку и вызывать его перед вызовом импортируемой фукции.
Исправлено: [Не верьте тому, что тут написано, поверите - будете долго разбираться с вылетами связаными с правами доступа в память]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы