![]() |
Delphi-Version: 7
PChar an DLL übergeben
Ich hab im moment ein ganz simples Problem, das ich eigentlich schon öfter gemacht habe, aber irgendwie finde ich aktuell die Lösung nicht.
ich habe eine DLL mit einer procedure stdcall. An diese procedure übergebe ich zwei PChar. Es kommt da aber nur Unsinn an. wenn ich stdcall weglasse, dann passt es. Da ich aber von anderen Sprachen darauf zugreifen möchte, bräuchte ich eigentlich stdcall. Vermutlich handelt es sich um einen dummen Leichtsinnsfehler, aber ich sitz gerade voll auf'm Schlauch. Quellcode der DLL:
Delphi-Quellcode:
Quellcode des aufrufenden Programms:
library DelphiDll;
uses SysUtils, Classes; {$R *.res} procedure TestMethod(value1: PChar; value2: PChar); stdcall; begin end; exports TestMethod; end.
Delphi-Quellcode:
program DelphiDllTest;
{$APPTYPE CONSOLE} uses SysUtils, Windows; type TTestMethod = procedure(value1: PChar; value2: PChar); var lib: Cardinal; method: TTestMethod; begin lib := LoadLibrary(PChar('DelphiDll.dll')); if lib <> 0 then begin @method := GetProcAddress(lib, PChar('TestMethod')); if Assigned(method) then method(PChar('test1'), PChar('test2')); end; end. |
AW: PChar an DLL übergeben
Du musst das stdcall schon auf beiden Seiten angeben, also auch in der Anwendung bei der Typdefinition.
|
AW: PChar an DLL übergeben
Ich wusste, dass es ein Leichtsinnsfehler ist... Vielen Dank
|
AW: PChar an DLL übergeben
Oder anders gesagt: Auf beiden Seiten müssen die Definitionen übereinstimmen.
> Also könnte man das stdcall auch auf beiden Seiten weglassen, oder eine andere Aufrufkonvention verwenden. ABER noch was zum PChar: Verwende niemals dynamische Typen für Exportfunktionen :!: (Daten speichern, übertragen, oder sonstwie an unabhängige Module übergeben) > ![]() siehe htttp://www.delphipraxis.net/177787-unicode-problem.html ![]() und massig weitere Threads |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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