Autor Beitrag
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Sa 22.07.06 16:10 
Hallo,
was muss ich beachten, wenn ich eine mit Delphi geschriebene DLL auch unter FreePascal kompatibel kompilierbar machen will? Es scheint mir so, als hätten (packed) records in FreePascal eine etwas andere Struktur als in Delphi.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 22.07.06 16:13 
Nimm keine Packed Records ;-) Datenstrukturen sind im Allgemeinen oft das Problem.

_________________
Markus Kinzler.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Sa 22.07.06 16:48 
Aber ich wollte mit packed records Problemen mit unterschiedlichen Alignment aus dem Weg gehen.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Sa 22.07.06 17:28 
Die Parameter-Reihenfolge scheint bei FreePascal auch anders zu sein. Definiere ich eine Methode in Delphi mit den Parametern x,y und rufe diese Methode in der FreePascal-DLL auf, so kommt das als y,x in Delphi an. Den Delphi-Compatibility-Schalter habe ich aber gesetzt.
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Sa 22.07.06 17:40 
Was ist mit stdcall? Kann FreePascal das nicht?


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 22.07.06 17:46 
@Spaceguide: Nach deinen Beschreibungen nach (mit den x- und y-Werten) musst du wahrscheinlich wirklich nur stdcall hinzufügen. FPC scheint sich also eher an den C++-Standard zu halten (da sind die Paramater auch in der entgegengesetzten Reihenfolge von Delphi, wodurch man bei DLLs eigentlich immer stdcall hinzuschreiben sollte ;) )
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: So 23.07.06 19:53 
stdcall! *an Kopf klatsch* Das hab ich einfach vergessen (bei den zu exportierenden Funktionen hab ich's naemlich).

Was nehme ich am besten als GetMem/FreeMem in der DLL? Kann ich die Prozeduren von FreePascal verwenden oder soll ich lieber die Funktionsadressen von GetMem/FreeMem vom Host übergeben und diese verwenden? Ich benutze den FastMM4 und weiss nicht, ob sich das dann in die Quere kommt.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mo 24.07.06 20:02 
Yo, weiss wohl niemand. Hab aber die übrigen Bugs gefunden => Compiler-Bugs :(