TspsIo.IPS7Open
Wenn Du das so machst, ist das ein 8-Byte Pointer, nicht 4 byte, wie erwartet.
Der Grund ist ein einfacher : Delphi braucht 4 Byte für die funktion (die nur einmal im Peicher ist und von allen erstellten Objekten diesen Typs verwendet wird und 4 Byte sind für das "Datensegment" deines Objekts, da der Code ja nicht weiss, wo deine Variablen sind für jede Instanz des Objektes.
Solche 8-Byte pointer kann man afaik nicht exportieren. Dies ist ja auch sehr Delphi spezifisch und
DLL sind dazu gedacht, mit allen Programmiersprachen zu funktionieren