Aufruf einer function von Delphi zu einer C++ Dll

Rund um die LCL und andere Komponenten
Antworten
epos
Beiträge: 8
Registriert: Mo 11. Nov 2019, 07:06

Aufruf einer function von Delphi zu einer C++ Dll

Beitrag von epos »

Auch wenn ich meine Funktion im Moment nicht für Lazarus sondern für Delphi brauche stelle ich meine Frage hier rein. Vielleicht kann ich mein Verständnis für die Unterschiedlichen Anbindungen erweitern. Das dürfte sich auch in Lazarus spiegeln?

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.


Das ist die function in der DLL

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


Hier hole ich die Adresse für den Einstieg

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


Hier ist mein Aufruf der DLL Funktion

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

Und das liefert nichts zurück, auch keinen Fehler.

Vielleicht kann mir jemand helfen.

Benutzeravatar
six1
Beiträge: 837
Registriert: Do 1. Jul 2010, 19:01

Re: Aufruf einer function von Delphi zu einer C++ Dll

Beitrag von six1 »

Schreibe doch bitte noch die Deklaration der Variablen mit rein: ps, pplz, cc, dummy, @rc_getback, pNameFehler
Gruß, Michael

Benutzeravatar
Aidex
Beiträge: 60
Registriert: Do 24. Sep 2020, 07:02
OS, Lazarus, FPC: Win10 64bit, Laz v2.0.10
CPU-Target: AMD64

Re: Aufruf einer function von Delphi zu einer C++ Dll

Beitrag von Aidex »

In Freepascal {$mode objfpc} würde die Zuweisung so heißen ...
Pointer(tcs_buch_xwork) := GetProcAddress(NameHandle, 'tcs_buch_xwork');
Aber das nur hier am Rande, auf deine Delphi-Frage hat das keinen Einfluss.

Antworten