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.
Aufruf einer function von Delphi zu einer C++ Dll
Re: Aufruf einer function von Delphi zu einer C++ Dll
Schreibe doch bitte noch die Deklaration der Variablen mit rein: ps, pplz, cc, dummy, @rc_getback, pNameFehler
Gruß, Michael
- 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
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.
Pointer(tcs_buch_xwork) := GetProcAddress(NameHandle, 'tcs_buch_xwork');
Aber das nur hier am Rande, auf deine Delphi-Frage hat das keinen Einfluss.