Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi C++ DLL (Funktion) nach Delphi (https://www.delphipraxis.net/196528-c-dll-funktion-nach-delphi.html)

zeras 28. Mai 2018 21:16

C++ DLL (Funktion) nach Delphi
 
Ich möchte eine DLL nutzen, wofür es auch ein Beispiel in C gibt:

Code:
IPC_API HRESULT WINAPI InitIPC(WORD index);
Wie müsste diese in Delphi deklariert werden? Ich habe schon eine DLL eines anderen Herstellers implementiert. Dort hatte ich einige Zeit gebraucht, um das korrekt zu Implementieren. Ich denke da an cdecl oder ?

KodeZwerg 28. Mai 2018 21:33

AW: C++ DLL (Funktion) nach Delphi
 
Meinst Du sowas wie
Delphi-Quellcode:
function InitIPC(Index: Word): HRESULT; stdcall; external 'name der.dll';
?

Der schöne Günther 28. Mai 2018 21:35

AW: C++ DLL (Funktion) nach Delphi
 
WINAPI ist schonmal stdcall und nicht cdecl ;-)

Was IPC_API ist? Keine Ahnung. Steht da nicht mehr?

zeras 28. Mai 2018 21:52

AW: C++ DLL (Funktion) nach Delphi
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1403249)
WINAPI ist schonmal stdcall und nicht cdecl ;-)

Was IPC_API ist? Keine Ahnung. Steht da nicht mehr?

Das habe ich noch gefunden:
Code:
#ifdef IPC_EXPORTS
#define IPC_API __declspec(dllexport)
#else
#define IPC_API __declspec(dllimport)
#endif

#ifndef WINAPI
#define WINAPI __stdcall
#endif

#ifndef HRESULT
#define HRESULT long
#endif
Vielleicht hilft das noch weiter.

zeras 28. Mai 2018 21:57

AW: C++ DLL (Funktion) nach Delphi
 
Zitat:

Zitat von KodeZwerg (Beitrag 1403248)
Meinst Du sowas wie
Delphi-Quellcode:
function InitIPC(Index: Word): HRESULT; stdcall; external 'name der.dll';
?

So in etwas hatte ich das bei einer anderen DLL eines anderen Anbieters gemacht:

Code:
function OttOpen: int32_t stdcall; external NameDLL name 'OttOpen';
wobei NameDLL, wie zu vermuten, der Name der DLL ist.

KodeZwerg 28. Mai 2018 22:14

AW: C++ DLL (Funktion) nach Delphi
 
Bedeutet das, dass das was ich schrieb funktioniert oder wie soll ich das interpretieren?

zeras 28. Mai 2018 22:18

AW: C++ DLL (Funktion) nach Delphi
 
Zitat:

Zitat von KodeZwerg (Beitrag 1403252)
Bedeutet das, dass das was ich schrieb funktioniert oder wie soll ich das interpretieren?

Danke für den Code.

Das kann ich erst morgen testen. Ich gebe dann wieder Bescheid.

KodeZwerg 28. Mai 2018 22:20

AW: C++ DLL (Funktion) nach Delphi
 
Ja gern geschehen, external 'name der.dll'; <- nicht vergessen mit richtigen Namen auszutauschen.
Ich kenne ja dll name nicht.
Viel Erfolg dabei!

Zacherl 29. Mai 2018 00:54

AW: C++ DLL (Funktion) nach Delphi
 
Das
Code:
#ifdef IPC_EXPORTS
#define IPC_API __declspec(dllexport)
#else
#define IPC_API __declspec(dllimport)
#endif
ist lediglich die C/C++ Art mit Exports über Library/Dll Grenzen umzugehen. Die Library selbst definiert
Delphi-Quellcode:
IPC_EXPORTS
, wodurch die entsprechend gekennzeichneten Funktionen dann exportiert (
Delphi-Quellcode:
dllexport
) werden und jedes Projekt, was die Library verwendet, definiert das Macro nicht, wodurch der Linker weiß, dass die Funkionen in einer Dll liegen (
Delphi-Quellcode:
dllimport
was gleichbedeutend ist mit Delphis
Delphi-Quellcode:
external
).

zeras 29. Mai 2018 11:29

AW: C++ DLL (Funktion) nach Delphi
 
Dank für eure Tipps.
Ich habe nun die ersten Werte bekommen mit folgendem Aufruf:

Code:
Const NameDLL = 'IPC.DLL';

function InitIPC(index: word): HRESULT; stdcall; external NameDLL name 'InitIPC';


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.
Seite 1 von 2  1 2      

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