inzwischen habe ich leidlich erfolgreich an meine früheren Assembler-Zeiten angeknüpft. Microsoft C++ mag ich allerdings auch nicht mehr missen. Aber es gibt eben doch viele Funktionen, die lassen sich mit relativ geringem Aufwand (und mit hervorragender Laufzeit-Performance) mit einer kleinen MASM32-Utility lösen.
Hier ist nun mein Problem:
Ich möchte aus dem Assembler-Code heraus eine Instanz einer C++-Klasse aufrufen.
Anhand einer Link-Liste habe ich den verschlüsselten Namen der aufzurufenden Funktion identifiziert und mit dem Statement
Code: Alles auswählen
extern syscall ?Append@CString@@QAEXPBD@Z:PTRCode: Alles auswählen
extern syscall ?Append@CString@@QAEXPBD@Z:PTR
. . .
EncodeAsm PROC pTarget:DWORD, pFormatText:DWORD, ValueList:VARARG
. . .
PUSH 040h ; der zu übergebende Wert (per C++-Argumentliste)
MOV ECX,pTarget ; Zeiger auf die Instanz der Daten
JMP ?Append@CString@@QAEXPBD@Z
. . .
Der Aufruf geht allerdings jedesmal schief und endet mit einer Access Violation.
Hat jemand eine Idee, wo mein Fehler liegt?
Oder gibt es irgendwo eine allgemeinere Beschreibung, wie man eine C++-Klassenfunktion aufruft?
Vielen Dank vorab
Manni-P