Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Aufruf einer function von Delphi zu einer C++ Dll (https://www.delphipraxis.net/208063-aufruf-einer-function-von-delphi-zu-einer-c-dll.html)

dpKlaus 3. Jun 2021 14:17

Delphi-Version: 10.3 Rio

Aufruf einer function von Delphi zu einer C++ Dll
 
Ich nutze eine DLL in Delphi. Mit Delphi 2005 klapp alles . Mit Delphi 10.3 erhalte ich keine Ergebnisse in "rc_getback" von einem Funktionsaufruf zurück. Das Einbinden der DLL mit LoadLibrary klappt. Ich erhalte auch Reaktionen mit einfachen Aufrufen. Nur der unten stehende Aufruf "tcs_buch_xwork" liefert keine Ergebnisse, auch keine Fehler.


This ist the function in the DLL

tcs_buch_xwork : function (wert: pointer; plz: pointer; pzart: integer; dummy: integer; rc_getback: pointer; ref:pointer) : smallint;stdcall;


I get the address for the call

@tcs_buch_xwork := GetProcAddress(NameHandle, 'tcs_buch_xwork');


This is how I use the function: DLLFehler means DLLerror

if @tcs_buch_xwork <> nil then
DLLFehler := tcs_buch_xwork (ps, pplz, cc, dummy, @rc_getback, pNameFehler);

TiGü 3. Jun 2021 15:01

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
1. Hast du den C-Header mit der Original-Definition oder eine Dokumentation dazu?
2. Sind rc_getback und ref Zeiger auf Strings?
3. Kannst du uns die Typen deiner Variablen ps, pplz, cc, dummy, @rc_getback, pNameFehler zeigen?
Vermute hier Problem wegen Unicode-Umstellung (PChar -> PAnsiChar oder PWideChar).

dpKlaus 3. Jun 2021 16:22

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
Hallo und vielen Dank für die schnelle Antwort.

Die Beschreibung der DLL-Schnittstelle hab ich nicht sofort zu Hand. Da nuss ich suchen. Dauert aber ein bisschen. Ist schon sehr lange im Einsatz.

Die Vermutung mit den veränderten Parametern hatte ich auch. Allerdings kann ich dieses umsetzen noch nicht.

Meine Variablendeklarationen sind

rc_ getback : array [0..600] of char;

OK : boolean;
BuchungsProtokoll : string;
DLLFehler : smallint;
NameAktiv : boolean = false;
NameHandle : THandle;
plz : array [0..10] of char;
pplz : pchar;
tlv : integer;
ptlv : pchar;
cc : smallint;
dummy : smallint = 0;

NameFehler : smallint;
pNameFehler : pointer;

ref ist der pNameFehler - In NameFehler wird eine FehlerNummer zurüchgegeben.

venice2 3. Jun 2021 16:26

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
Frage mich wie das ohne out, var Parameter überhaupt funktionieren kann siehe ref:pointer

DeddyH 3. Jun 2021 16:44

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
Wenn es mit Delphi 2005 funktioniert hat, versuch einmal, alle Chars als AnsiChars und alle PChars als PAnsiChars zu deklarieren.

dpKlaus 3. Jun 2021 17:34

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
@DaddyH Ja, danke das probiere ich aus.

Andreas13 3. Jun 2021 19:47

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
Hallo dpKlaus,
Du kannst Deinen QuellCode hier mit Hilfe des Delphi-Symbols (= Helm mit rotem Kamm gleich über der ersten Zeile im Editor) richtig formatieren, damit er besser lesbar ist.
Gruß, Andreas
PS: Das geht auch nachträglich über den Button "Bearbeiten"

dpKlaus 4. Jun 2021 17:02

AW: Aufruf einer function von Delphi zu einer C++ Dll
 
@DaddyH Vielen Dank die Hilfe. Es funktioniert wieder. :thumb:


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