Externe Bibliotheken importieren
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Externe Bibliotheken importieren
Hi und guten Morgen!
Kann mir jemand einen Tip geben, wie man damit beginnt, externe Bibliotheken (*.dll und *.so) zu nutzen? Ich weiß jetzt ehrlich gesagt gar nicht, wie und wo ich beginnen soll.
Danke.
Kann mir jemand einen Tip geben, wie man damit beginnt, externe Bibliotheken (*.dll und *.so) zu nutzen? Ich weiß jetzt ehrlich gesagt gar nicht, wie und wo ich beginnen soll.
Danke.
Re: Externe Bibliotheken importieren
Meinst du in C geschriebene?
Wenn du den C header hast, kannst du dir mit dem Tool h2pas ein Pascal interface machen lassen.
Benötigt u.U. noch etwas Nachbearbeitung.
Wenn du den C header hast, kannst du dir mit dem Tool h2pas ein Pascal interface machen lassen.
Benötigt u.U. noch etwas Nachbearbeitung.
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Re: Externe Bibliotheken importieren
Hi,
hab' keine Header und die DLL ist in PureBasic geschrieben (was C-konforme DLLs erstellt).
hab' keine Header und die DLL ist in PureBasic geschrieben (was C-konforme DLLs erstellt).
Re: Externe Bibliotheken importieren
Hab ich noch nie gemacht. Irgend eine Interface Deklaration brauchst du natürlich schon.
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Re: Externe Bibliotheken importieren

War einfacher, als ich dachte.
Es ist zwar nur zu testzwecken, hat aber dennoch gut funktioniert:
Es reicht, die Funktion/Procedure so aufzurufen (zumindest in meinem Test war es so):
Code: Alles auswählen
function DoSomething(): Integer; external 'test.dll';
Re: Externe Bibliotheken importieren
Schon klar, wenn du diesen Namen und die Parameter kennst, das meinte ich ja.bembulak hat geschrieben: Wobei "DoSomething" auch der Name der Funktion in der DLL ist.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Externe Bibliotheken importieren
Delphi kann verschiedene Library-Formate (z.B. dll) "importieren" uns schreibt dann automatisch eine Interface-Unit. Kann Lazarus das nicht ?
-Michael
-Michael
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Externe Bibliotheken importieren
Echt? Das wäre ja genial! Ab welcher Version macht Delphi das denn? Ich habe noch nie von einer solchen Funktion gehört. (aber ich bin auch schon einige Zeit bei Lazarus und verfolge Delphi nicht mehr so mit)mschnell hat geschrieben:Delphi kann verschiedene Library-Formate (z.B. dll) "importieren" uns schreibt dann automatisch eine Interface-Unit. Kann Lazarus das nicht ?
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Externe Bibliotheken importieren
D7 konnte es bereits.
unter "Komponenten" -> "Komponente importieren"
wird u.a. "Typbibliothek" angeboten.
Delphi scannt dann die in Frage kommenden Dateien (*.dll, *.ocx, *.tlb, *.api, *.exe) und bietet diejenigen zur Auswahl an, die dynamisch linkbare FGunktionen enthalten.
Bei Lazarus habe ich noch keinen Bedarf für so etwas, hatte aber immer vermutet dass es auch angeboten würde....
-Michael
unter "Komponenten" -> "Komponente importieren"
wird u.a. "Typbibliothek" angeboten.
Delphi scannt dann die in Frage kommenden Dateien (*.dll, *.ocx, *.tlb, *.api, *.exe) und bietet diejenigen zur Auswahl an, die dynamisch linkbare FGunktionen enthalten.
Bei Lazarus habe ich noch keinen Bedarf für so etwas, hatte aber immer vermutet dass es auch angeboten würde....
-Michael
Re: Externe Bibliotheken importieren
Das geht aber nur für COM, nicht für normale DLL's.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Externe Bibliotheken importieren
War das nicht so, dass man zwar an einer Liste von Funktionen innerhalb einer DLL/SO ran kommt, aber nicht daran wie sie aufgerufen wird ?
Warum ist das eigentlich so ? Wenn es schon eine Liste der Funktionen gibt die, die DLL/SO Datei enthält, könnte dort auch dran stehen wie sie aufgerufen wird, würde bestimmt einiges vereinfachen.
Ich hatte das mal vor einiger Zeit versucht, bin aber gescheitert. Ich hat es mit diesem Tool versucht: h2pas. Wobei ich mir sicher war das es eine C-Header Datei war. Habt ihr damit schon Erfolg gehabt ?
Warum ist das eigentlich so ? Wenn es schon eine Liste der Funktionen gibt die, die DLL/SO Datei enthält, könnte dort auch dran stehen wie sie aufgerufen wird, würde bestimmt einiges vereinfachen.
Ich hatte das mal vor einiger Zeit versucht, bin aber gescheitert. Ich hat es mit diesem Tool versucht: h2pas. Wobei ich mir sicher war das es eine C-Header Datei war. Habt ihr damit schon Erfolg gehabt ?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Externe Bibliotheken importieren
Ich meine, wir haben das mit (anscheinend) normalen DLLs gemacht. Da das ein Kollege getan hat, bin ich aber nicht ganz sicher.theo hat geschrieben:Das geht aber nur für COM, nicht für normale DLL's.
Ich weiß nicht, was für Bedingungen die importierbaren Dateien genau erfüllen müssen. Offensichtlich muss in der Datei (oder sonst wo) eine Beschreibung existieren, welche Funktionen welche Aufruf-Nummer hat und welche Parameter sie erwartet.
Keine Ahnung ob es "COM" heißt, wenn so eine Beschreibung existiert.
Keine Ahnung ob es für Linux "so"-Dateien auch eine Spezifikation gibt, die es erlaubt so eine Beschreibung in der Datei unterzubringen.
-Michael
Re: Externe Bibliotheken importieren
Gefährliches Halbwissenmschnell hat geschrieben:Ich meine, wir haben das mit (anscheinend) normalen DLLs gemacht. Da das ein Kollege getan hat, bin ich aber nicht ganz sicher.theo hat geschrieben:Das geht aber nur für COM, nicht für normale DLL's.

http://en.wikipedia.org/wiki/Component_ ... _libraries" onclick="window.open(this.href);return false;
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Externe Bibliotheken importieren
Demnach ist es unter Linux nicht möglich. Aber unter Linux ist es auch kein Problem schnell an C-Header zu kommen.
Unter Windows will MS mit .NET COM sowieso bald begraben.
Unter Windows will MS mit .NET COM sowieso bald begraben.
Zuletzt geändert von Targion am Sa 19. Sep 2009, 19:42, insgesamt 1-mal geändert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Externe Bibliotheken importieren
Da kein "Interface" und kein "GUID" verwendet wurde. war es wohl doch kein COM ...
-Michael
-Michael