Вернуться   CoderX :: Forums > Основные форумы > Полезности
Войти через OpenID

Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 29.05.2009, 01:29   #11
Пользователь
 
Регистрация: 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 спасибками от:
 

  CoderX :: Forums > Основные форумы > Полезности



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:47.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!