Ich habe Probleme mit der Verwendung von DLLs.
Beim statischen Einbinden funktioniert dasselbe problemlos. Sobald das ganze dynamisch eingebunden wird, gibt es Probleme:
entweder liefert die Funktion oder Müll zurück oder aber das ganze bricht mit einem Laufzeitfehler (mit Anzeige des CPU-Fensters) ab.
Das ganze scheint sich also irgendwas im Speicher zu zerdeppern.
Evtl. hat von Euch einer eine Idee, was ich da noch falsch mache ?
Hier der Code der
dll:
Delphi-Quellcode:
library TurnFkt;
uses
SysUtils,
Classes;
{$R *.res}
var ColCaption:string;
function GetColCaption(ColName,Spezial:PChar): PChar;stdcall;
begin
ColCaption:=ColName;
Result:=PChar(ColCaption);
end;
exports GetColCaption;
begin
end.
und hier die Funktion im aufrufenden Programm:
Delphi-Quellcode:
function GetColCaption(ColName,Spezial:PChar): PChar;
stdcall;
// external '../TurnFkt.dll';
type TGetColCaption=function(ColName,Spezial:PChar): pchar;
var FGetColCaption:TGetColCaption;
Handle : THandle;
begin
Handle:=LoadLibrary(Pchar('
../TurnFkt'));
if Handle<>0
then
begin
@FGetColCaption:=GetProcAddress(
Handle,'
GetColCaption');
if @FGetColCaption<>
nil then
Result:=FGetColCaption(ColName,Spezial);
FreeLibrary(
Handle);
end;
end;
Als Anleitung habe ich das
Dll-Tutorial von
www.dsdt.info verwendet, Sharemem möchte ich nicht einsetzen.
[edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt. Mfg, SirThornberry[/edit]