Hi,
ich wollte mal ein bisschen mit dem dynamischen Linken von Bibliotheken spielen.
Mein
Package (Package1) hat eine
Unit (Unit1), die wie folgt aufgebaut ist:
Delphi-Quellcode:
unit Unit1;
interface
function GibAus(sString:
string):
string;
implementation
function GibAus(sString:
string):
string;
begin
try
Result := '
String aus Funktion: ' + sString;
except
end;
end;
exports
GibAus;
end.
Das Testprogramm so:
Delphi-Quellcode:
[...]
procedure TForm1.Button1Click(Sender: TObject);
var
PackageModule: HModule;
ExecF : function(sString: string):string;
begin
PackageModule := LoadPackage('Package1.bpl');
if PackageModule <> 0 then
begin
@ExecF:=GetProcAddress(PackageModule,'GibAus');
try
showmessage(ExecF('TestString'));
except
end;
end;
UnloadPackage(PackageModule);
end;
[...]
Wenn ich das Ausführe bekomme ich auch die Meldung:
Zitat:
String aus Funktion: TestString
direkt gefolgt von einem Fehler.
Das ist entweder:
'Invalid Pointer Operation'
oder
'
Access Violation'
Was mach ich falsch? Kennt jemand ein kleines Tutorial, wo das mit den dynamisch gelinkten Bibliotheken erklärt wird?
Es sollte eine
bpl und keine
dll sein?!