Из dll, написаной на с++, я получаю адрес метода по имени. Прототип метода прилагается. Но вызвать этот метод я не могу, так как он имеет соглашение о вызове __thiscall. (При попытке вызова происходит краш, что и не удивительно). Описание класса у меня есть, экземпляр создать могу, как мне можно вызвать этот метод, но чтобы вместо своей реализации выполнялась библиотечная?
typedef int (__thiscall *LoadMap)(char const *,int);
pDll=LoadLibrary("MindPower3D_D8R.dll");
loadmapfunction=(LoadMap)GetProcAddress(hMyDll,"?Load@MPMap@@QAEHPBDH@Z");
@Rainberd: Я ведь специально не делал таким образом, думал, что __thiscall по умалочанию вставит указатель первым аргументом... Спасибо огромное, теперь все работает.
решение "в лоб": в классе, для которово импортируется метод, создать метод-пустышку и вызывать его перед вызовом импортируемой фукции.
Исправлено: [Не верьте тому, что тут написано, поверите - будете долго разбираться с вылетами связаными с правами доступа в память]