Nach this question, muss ich wissen, welche Grundsätze befolgt werden sollten, um eine Kapselung einer Klasse in einer DLL kompatibel zu anderen Delphi-Versionen zu machen. Ich machte eine Klasse mit Generics-Funktion in RAD2010 und erstellen Sie eine DLL, die eine Funktion hat, die eine Instanz davon zurückgeben. Wenn ich versuchte, die DLL mit BDS2006 oder Delphi 6 zu verwenden, funktionierte die DLL nicht wie erwartet. Aber wenn ich RAD2010 in anderen Computern verwende, gibt es kein Problem. Wird es durch die Verwendung der Funktion verursacht, die in der vorherigen Delphi-Version nicht verfügbar war (der Stapel <> stuffs?)? Für Stringangelegenheiten befolge ich bereits die Kommentaranleitung in der Bibliotheksdatei, dass ich ShareMem sowohl in die Bibliothek uses-Klausel als auch in mein Projekt lege. Und ich habe borlndmm.dll von RAD2010 in den gleichen Ordner kopiert, in dem ich die DLL mit BDS2006 versuchte. Es ist nicht abgestürzt, aber es hat nicht funktioniert es erwartet. Eine Funktion gibt eine leere Zeichenfolge zurück, wenn sie in RAD2010-Umgebung sehr gut funktionierte.Welche Prinzipien sollten befolgt werden, damit eine mit Delphi erstellte DLL in anderen Delphi-Versionen gut funktioniert?
Noch einmal, ich habe eine Frage: Welche Prinzipien sollten befolgt werden, um eine Kapselung einer Klasse in einer DLL kompatibel zu einer anderen Version von Delphi zu machen? Vielen Dank im Voraus. (Für die Kapselung von Funktionen in einer DLL, wenn keine OOP verwendet wird, habe ich keine andere Version von Delphi ausgegeben).
Ich möchte starken Nachdruck auf den zweiten Absatz. Wenn Sie ein Feature in der Windows-API nicht verfügbar machen, stellen Sie es auch nicht in Ihrer eigenen DLL zur Verfügung. Tu so, als würdest du eine DLL schreiben, die von C verbraucht wird, oder sogar von einer Umgebung, die du noch nie zuvor gesehen hast. –
+1. Es sollte auch darauf hingewiesen werden, dass es keine Delphi-spezifischen Typen in Schnittstellenmethoden- und Funktionsergebnissen oder als Teile dieser Datensätze geben sollte (müssen). – mghie
+1. Vielleicht nicht verwandt, aber vergessen Sie nicht, alle (nicht COM-) DLL-Exporte als Stdcall zu deklarieren, wenn Sie sie in anderen Sprachen als Delphi verwenden wollen. –