Показать сообщение отдельно
Старый 29.05.2009, 01:29   #9
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 60
Сказал Спасибо: 3
Имеет 107 спасибок в 21 сообщенях
GoldFinch пока неопределено
По умолчанию

переходник для stdcall -> thiscall выглядит просто
у тебя есть указатель на thiscall метод TObj.foo
foo:=GetProcAddress(hEngine,"...");
и для вызова ты пишешь либо функцию
Код:
  function foo(obj:TObj , arg1:T1, arg2:T2);stdcall;
  asm
    pop eax //адрес возврата, временно сохраняем в eax
    pop ecx //аргумент obj, записываем в ecx как того требует __thiscall
    push eax //записываем сохраненный адрес возврата
    jmp [foo] //вызываем метод    
  end;
или метод
Код:
  function TObj.foo( arg1:T1, arg2:T2);stdcall;
  asm
    pop eax //адрес возврата, временно сохраняем в eax
    pop ecx //аргумент obj, записываем в ecx как того требует __thiscall
    push eax //записываем сохраненный адрес возврата
    jmp [foo] //вызываем метод    
  end;
GoldFinch вне форума   Ответить с цитированием
За это сообщение GoldFinch нажился 8 спасибками от: