Muszę zadzwonić non-statycznych C++ funkcje składoweDelphi thiscall wywołanie konwencja
Stąd muszę użyć thiscall
wzywającą Konwencję.
Delphi nie obsługuje tej konwencji wywoływania.
Więc zanim mogę zadzwonić do którejkolwiek z funkcji członka, muszę ręcznie popchnąć parametry w stosie.
asm
mov ecx, myClassPointer
end;
To działa dobrze, ale szukam lepszego sposobu na zrobienie tego.
W tej chwili wywołuję kod asm za każdym razem z classpointer przed wywołaniem funkcji, co nie jest miłe.
Ponieważ nie jestem ekspertem od Delphi, zastanawiam się, czy można zadeklarować własną konwencję wywoływania lub zautomatyzować wywoływanie tych wszystkich metod klasy.
Napisałem kilka [tego typu adapterów do bogatych w edycję Microsoft interfejsów] (http://www.cs.wisc.edu/~rkennedy/windowless-rtf), które niepoprawnie pominęły konwencje wywołujące. Moje adaptery owijają interfejsy w obu kierunkach, więc kod Delphi może wywoływać kod Microsoftu, a kod Microsoftu może oddzwaniać do interfejsu Delphi, a każda ze stron myśli, że druga dostarcza oczekiwaną konwencję wywoływania. Może okaże się to przydatne. –