![]() |
C++ DLL (Funktion) nach Delphi
Ich möchte eine DLL nutzen, wofür es auch ein Beispiel in C gibt:
Code:
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 ?
IPC_API HRESULT WINAPI InitIPC(WORD index);
|
AW: C++ DLL (Funktion) nach Delphi
Meinst Du sowas wie
Delphi-Quellcode:
?
function InitIPC(Index: Word): HRESULT; stdcall; external 'name der.dll';
|
AW: C++ DLL (Funktion) nach Delphi
WINAPI ist schonmal stdcall und nicht cdecl ;-)
Was IPC_API ist? Keine Ahnung. Steht da nicht mehr? |
AW: C++ DLL (Funktion) nach Delphi
Zitat:
Code:
Vielleicht hilft das noch weiter.
#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 |
AW: C++ DLL (Funktion) nach Delphi
Zitat:
Code:
wobei NameDLL, wie zu vermuten, der Name der DLL ist.
function OttOpen: int32_t stdcall; external NameDLL name 'OttOpen';
|
AW: C++ DLL (Funktion) nach Delphi
Bedeutet das, dass das was ich schrieb funktioniert oder wie soll ich das interpretieren?
|
AW: C++ DLL (Funktion) nach Delphi
Zitat:
Das kann ich erst morgen testen. Ich gebe dann wieder Bescheid. |
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! |
AW: C++ DLL (Funktion) nach Delphi
Das
Code:
ist lediglich die C/C++ Art mit Exports über Library/Dll Grenzen umzugehen. Die Library selbst definiert
#ifdef IPC_EXPORTS
#define IPC_API __declspec(dllexport) #else #define IPC_API __declspec(dllimport) #endif
Delphi-Quellcode:
, wodurch die entsprechend gekennzeichneten Funktionen dann exportiert (
IPC_EXPORTS
Delphi-Quellcode:
) werden und jedes Projekt, was die Library verwendet, definiert das Macro nicht, wodurch der Linker weiß, dass die Funkionen in einer Dll liegen (
dllexport
Delphi-Quellcode:
was gleichbedeutend ist mit Delphis
dllimport
Delphi-Quellcode:
).
external
|
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'; |
AW: C++ DLL (Funktion) nach Delphi
Frage in die Runde
Was bewirkt das zusätzliche "NAME 'FUNKTIONSNAME'" ? Ich habe schon oft Dlls Importiert aber nie diese Floskel benutzt. Kann es sein das es nur dafür dient das wenn meine "function xyz" oder "procedure xyz" benannt ist aber aus dll "zxy" genutzt werden soll das "name 'zxy'" dies dann ermöglicht? |
AW: C++ DLL (Funktion) nach Delphi
Wenn "dein" Funktion-Name mit dem Import-Name übereinstimmt, dann muß
Delphi-Quellcode:
nicht angegeben werden.
name 'xxx'
Delphi-Quellcode:
Viele machen bei Imports noch einen Präfix/Klassennamen davor, damit wenn du z.B. eine Funktion "Init" von zwei DLLs importierst, die Namen eindeutig sind, ohne zusätzliche Angabe des Namespace (Unitnamen).
Const NameDLL = 'IPC.DLL';
function InitIPC(index: word): HRESULT; stdcall; external NameDLL; function IPC_InitIPC(index: word): HRESULT; stdcall; external NameDLL name 'InitIPC'; function DasKannAuchSonstwieBenanntWerden(index: word): HRESULT; stdcall; external NameDLL name 'InitIPC'; |
AW: C++ DLL (Funktion) nach Delphi
Danke für meine Vermutung, auch wenn ichs bestimmt falsch ausgedrückt habe meinte ich es genau wie Du geschildert hast.
Danke himitsu! |
AW: C++ DLL (Funktion) nach Delphi
Zitat:
|
AW: C++ DLL (Funktion) nach Delphi
[OT] // C nach Delphi
![]() [/OT] Wird dir bei C++ aber erstmal nichts nützen, ich hoffe aber das es dort auch damit weitergeht. Rollo |
AW: C++ DLL (Funktion) nach Delphi
Darauf wollte ich hinaus, Dir Zeit zu ersparen, ich war mir nur nicht zu 100% Gewiss obs so ist wie ichs dachte.
Bevor ich mumpitz schreibe (hiermit getan) bohrte ich nach :lol: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz