Zitat Zitat von Ineluki Beitrag anzeigen
hm ... schwierig .. Intersprachenoperabilitaet ist etwas, um das ich mich lange Zeit gedrueckt habe ...

Zum einen .. Im Header definierst du keinen Variablentyp TMyRecord, sondern einen struct vom Typ MyRecord und eine Variable TMyRecord vom typ MyRecord.
(Falls ich gerade Bloedsinn schreibe, bitte ignorieren .. bin noch etwas Schlaftrunken ...)

Zum anderen solltest du mal nachsehen, ob stdcall fuer die Uebergabe das nonplusultra ist. Sowohl in Pascal als auch in C/++ muessen beide Funktionen die selbe Aufrufkonvention haben. Sprich ob sie selber den Stack aufraeumen, in welcher Reihenfolge sie Parameter uebergeben, etc.

Im Zweifelsfall machs, wie alle, und arbeite mit Handles. Erstelle in der Funktion einen Pointer auf deinen Record im Heap, gib den als funktionswert zurueck und mache eine Funktion, die den als Parameter bekommt und es am ende Frei gibt. Effektiv ist die Arbeit mit Interfaces auch nichts anderes ...
Allesklar, danke. Die Aufrufkonvention habe ich total vergessen. Hatte irgendwie im Kopf, dass bei C/++ stdcall Standart wäre. Ich habe nun die Variabeldeklaration weggelassen und einfach nur den Type definiert. Nun geht es.

Nun meine Frage, was ist denn die Standart-Aufrufkonvetion in C/++? Scheinbar mag mein Compiler die .lib-Datei nicht mehr, seitdem ich die Aufrufkon. auf __stdcall gesetzt habe. Dahher versuche ich lieber die Funktionen entsprechend in Pascal so zu exportieren, dass C/++ am wenigsten Probleme machen.