Ist es möglich, aus einer DLL per function (oder procedure?) lediglich die Deklaration einer Klasse zu erhalten, um sie anschließend in der Hauptanwendung zu instantiieren? Die Instanzvariablen sollen dabei natürlich vom gleichen (Interface-) Typ sein, der auch von der deklarierten Klasse implementiert wird.
Ziel ist, Plugins mithilfe DLLs modular zur Hauptanwendung hinzufügen zu können. Die angesprochene Klasse innerhalb der DLL zu instantiieren und ihre Arbeit verrichten zu lassen, würde besondere Speichermanager oder andere Typen-Einschränkungen zur Folge haben.
Mit welchen Problemen müsste man rechnen und bleibt diese Lösung offen für DLLs aus anderen Programmiersprachen?
Eine gedachte Lösung könnte etwa so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var dllClass: TClass; i: IMyInterface; begin dllClass := LoadedDll.GetDLLClass; i := dllClass.Create(aCreateParameter); try i.DoWork(aWorkParameter); finally i.Free; end; end; |