Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Klassen in DLLs? (https://www.delphipraxis.net/3639-klassen-dlls.html)

mirage228 23. Mär 2003 10:40


Klassen in DLLs?
 
Also ich habe eine Klasse, die heisst
TMainClass

und hat virtuelle Methoden, die von den unterklassen mit override überschrieben werden. Ich wollte jetzt diese TMainClass in eine DLL packen und mit der Exportieren.

Meine Fragen sind:
Wie kann ich diese Klasse mit der DLL exportieren
und wie kann ich diese in Delphi dann wieder importieren.

thx mirage228

OregonGhost 23. Mär 2003 12:24

Wenn sich das nicht geändert hat, als ich mich das letzte Mal damit befasst habe, dann kann eine Delphi-DLL keine Klassen exportieren. Wenn du es trotzdem machen willst, hast du im wesentlichen zwei Möglichkeiten:
1. COM (ist kompliziert aber funktioniert auf jeden Fall
2. Wenn sowohl DLL als auch aufrufendes Programm mit Delphi gemacht sind, kannst du in der DLL eine Funktion exportieren, die einen Zeiger auf eine Instanz der im Programm bekannten Basisklasse zurückliefert, intern aber eine abgeleitete Version verwendet.

Das heißt, "offiziell" exportiert in deinem Beispiel die DLL eine Funktion, die einen Zeiger auf TMainClass zurückliefert, die Funktion selbst instanziiert aber eine von TMainClass abgeleitete Klasse.

Weiß nicht ob's so geht aber müsste eigentlich ;c)

mirage228 23. Mär 2003 12:37

danke erstmal für den lösungsvorschlag, aber ich bin noch nicht so gut in delphi und weiss nicht sehr viel damit anzufangen! Gibt es vielleicht irgendwo ein beispiel, damit ich es mir veranschaulichen kann?

jbg 23. Mär 2003 16:10

Re: Klassen in DLLs?
 
Zitat:

Zitat von mirage228
Wie kann ich diese Klasse mit der DLL exportieren

Die Lösung heißt hier Packages. Denn bei normalen DLLs kann es sehr leicht krachen und es ist zudem auch noch umständlich zu programmieren. Bei Packages hingegen tut man so, als ob die Unit, in der die Klasse deklariert ist, zum selben Projekt gehört. Der Compiler sorgt aber dafür, dass die gesamte Unit in eine bpl-Datei ausgelagert wird.


Zitat:

und wie kann ich diese in Delphi dann wieder importieren.
Bei Packages macht das der Compiler für dich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz