Zitat von
SirThornberry:
Es geht nicht nur um
VCL-Komponenten sondern generell um Objecte. Das der Fehler erst beim Beenden kommt hast du richtig erkannt. Problem ist das die
DLL und deine Anwendung getrennte Speichermanager verwenden. Beim Beenden versuchen diese den Speicher frei zugeben und da kommt es zu Fehlern weil der eine Speichermanager versucht Dinge frei zu geben die er gar nicht angefordert hat.
Aber man sollte generell keine Objecte zwischen
DLL und Anwendung austauschen. Dafür gibt es BPLs. Diese haben den Vorteil das sicher gestellt wird das die Objecte in der
DLL(
BPL) identisch mit denen außerhalb der
DLL(
BPL) sind. Denn bei normaler Verwendung per
DLL stellt ja niemand sicher das ein Object aus der
DLL von der gleichen Delphiversion mit dem gleichen Speicheraufbau stammt.
Hatte (da ich eigentlich noch nie Objekte in einer
dll gebraucht habe) das Problem zwar nocht nicht, aber kannst du das bitte nochmal genauer ausführen? Wie sieht es zum Beispiel mit einer einfachen von TObject abgeleiteten Klasse aus, die nicht ausgetauscht wird, sondern einfach nur in der
dll verwendet wird?