Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Type Library in dll compilieren (https://www.delphipraxis.net/43559-type-library-dll-compilieren.html)

weltaran 5. Apr 2005 20:01


Type Library in dll compilieren
 
Hallo Leute!

Mir sind nun schon des öfteren DLLs zwischen die Finger gekommen, welche die Funktionsparameter in einer sogenannten Typ-Bibliothek zur Verfügung stellen können. Mir ist bekannt, dass man mit Delphi auch TypBibliotheken anlegen kann, und zwar nicht nur für COM-DLLs sondern auch für herkömmliche DLLs. Diese Typ-Bibliothek ist dann jedoch als separates file vorhanden (*.tlb). Gibt es keine Möglichkeit diese (binären) Daten innerhalb der DLL zu speichern, so wie es andere Entwicklungsumgebungen/Programmiersprachen offensichtlich auch können? Vielleicht ein externes Tool?

Was meint ihr?

Ciao

weltaran 8. Apr 2005 09:33

Re: Type Library in dll compilieren
 
OK, dann muss ich mir halt selbst antworten. Habe das Problem gelöst.

Vorgehensweise:

1. Datei/Neu/ActiveX-Bibliothek
2. Datei/Neu/TypBibliothek
3. Auskommentieren im DLL-Source-File:
- in den uses: ComServ
- alle vier DLL... -Funktionen
4. Neue Unit anlegen und Klassen/Funktionen anlegen (stdcall)
5. In der TypBibliothek (Ansicht/TypBibliothek):
- Neues Modul anlegen:
* Name des Moduls unerheblich
* Name der DLL: tatsächlicher name der zu erzeugenden DLL eintragen
- Methode innerhalb des Modula anlegen:
* Funktionsname so eintragen, wie er später in der Funktionsliste erscheinen soll
* DLL-Einsprung: Funktionsname so eintragen, wie er in der source verwendet wird
* Über- und Rückgabeparameter entsprechen der source eintragen
6. Tatsächl. Funktionsname in die exports-Anweisung eintragen
7. Datei ..._TLB.pas aus dem Projekt entfernen
8. Compilieren, fertig

Die DLL hat dann lediglich 19 KB (wenn nur eine kleine Funktion enthalten ist) und ist natürlich KEINE ActiveX-DLL. Würde man die COM-Server Funktionalität beibehalten wären es ca. 300 KB.

Anwendungen, die die binären Informationen der IN der DLL enthaltenen TypBibliothek auswerten können, stellen nun alle Methoden samt Parameternamen und -typen zur Auswahl dar.

Vielleicht kann es ja jemand gebrauchen.

Ciao

weltaran

shmia 8. Apr 2005 10:02

Re: Type Library in dll compilieren
 
Zitat:

Zitat von weltaran
OK, dann muss ich mir halt selbst antworten. Habe das Problem gelöst.

Vielleicht kann es ja jemand gebrauchen.

Danke schön für die Forschungsarbeit.
Ich habe mich manchmal schon gefragt, warum es eigentlich für die Windows-API keine TLB gibt.
Wenn dann die diversen Programmierumgebungen (Delphi, C++Builder, VB, ...) die TLBs lesen und verstehen würden, wären die meisten Unsicherheiten bei Benutzung von DLLs geklärt.
Leider kann Delphi5 die Deklarationen im Abschnitt "module" nicht importieren. :(

Bernhard Geyer 8. Apr 2005 10:21

Re: Type Library in dll compilieren
 
Zitat:

Zitat von shmia
Ich habe mich manchmal schon gefragt, warum es eigentlich für die Windows-API keine TLB gibt.
Wenn dann die diversen Programmierumgebungen (Delphi, C++Builder, VB, ...) die TLBs lesen und verstehen würden, wären die meisten Unsicherheiten bei Benutzung von DLLs geklärt.

Als die WinAPI auf DLL-Basis definiert wurde gabe es dieses Konzept der TLB's noch nicht. Erst über die Irrwege von DDE/OLE1 wurde mit COM und TLB's ein halbwegs vernünftiges System entwickelt, in der eine Funktionsbeschreibung mit einer Komponente sprachunabhängig mitgeliefert wurde. Und für die "alten" DLL-Schnittstellen hat man sich halt nicht die Arbeit gemacht diese nachzuliefern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.

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