Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C - lib Datei, DLL und Delphi (https://www.delphipraxis.net/109524-c-lib-datei-dll-und-delphi.html)

MrSpock 3. Mär 2008 05:33


C - lib Datei, DLL und Delphi
 
Hallo,

ich habe eine DLL mit einem API zu einer PCMCIA Karte. Gemäß Beschreibung des Herstellers habe ich mit importlib eine .lib Datei erzeugt, die ich auch Problemlos in den C-Code einbinden kann (einfach dem C++ Projekt hinzugefügt). Jetzt möchte ich diese API aber unter Delphi nutzen. Die DLL ist nicht registriert und ich kann sie deshalb auch nicht als Typbibliothek importieren. Wie komme ich an die Funktionen der DLL oder lib Datei heran? Muss ich eine C/C++ DLL schreiben, die die Aufrufe kapselt und diese in mein Delphi Projekt nutzen? :gruebel:

mkinzler 3. Mär 2008 05:35

Re: C - lib Datei, DLL und Delphi
 
Nein du kannst aber die c-Header-datei verwenden um dir eine Importdefinition für Delphi zu erstellen.

MrSpock 3. Mär 2008 05:46

Re: C - lib Datei, DLL und Delphi
 
Hallo mkinzler,

meinst du die C-Strukturen und Funktionsaufrufe in Pascal Syntax übertragen?

Und dann die Funktion mit "external" deklarieren:

Delphi-Quellcode:
function myfunction(param1: Int; param2: string): int; external 'dieDLLvomHersteller.dll';
Gibt es dabei etwas bei der Parameterübergabe zu beachten, z.B. bei Strings?

mkinzler 3. Mär 2008 06:35

Re: C - lib Datei, DLL und Delphi
 
Du könntest auch HeadConv ansetzen
Strings sind ja PChar.

jbg 3. Mär 2008 11:17

Re: C - lib Datei, DLL und Delphi
 
Zitat:

Zitat von mkinzler
Strings sind ja PChar.

Und die Aufrufkonvention ist cdecl in den meisten C-Fällen. Oder auch stdcall wenn das entsprechend bei der Headerdatei angegeben ist. Ohne Angabe auf der Delphi-Seite würde Delphi register verwenden, was hunderprozentig schief geht.

MrSpock 3. Mär 2008 14:05

Re: C - lib Datei, DLL und Delphi
 
Hallo,

danke für die guten Tipps. Werde ich nachher mal ausprobieren.

[update]Das Konvertiertool hat offensichtlich Probleme mit den vielen #ifdef oder #ifndef Anweisungen. Muss ich händisch noch eine Menge nacharbeiten.

Soll man #includes von anderen Headerdateien in Delphi über {$I ...} nachbilden oder über uses als eigene Datei ansprechen?[/update]


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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