Ich habe die
DLL jetzt dynamisch eingebunden, aber sobald die Prozedur in der
DLL ausgeführt wird, bekomme ich ein AccessViolation-Error
Die Prozedur LoadDll(DllName: String); wird inFrom1.Create aufgerufen.
Delphi-Quellcode:
procedure TfrmMain.LoadDll(DllName:
String);
var
Handle: THandle;
begin
//Dll wird nun eingebunden
Handle := LoadLibrary(PChar(DllName));
if (
Handle <> 0)
then begin
GetCommand := GetProcAddress(
Handle,'
GetCommand');
end;
FreeLibrary(
Handle);
end;
GetCommand wird global deklariert und zwar als TGetCommand, welches so aussieht:
TGetCommand = procedure(CmdStr: String; SockId: Integer); stdcall;
Sobald ich GetCommand(); aufrufe, gibt es den Fehler. Folglich wird wohl etwas bei LoadDll nicht stimmen, aber was?
Btw.:
Die
Dll sieht so aus:
Delphi-Quellcode:
library commdll;
uses
SysUtils,
Classes,
Dialogs;
{$R *.res}
procedure GetCommand();
begin
ShowMessage('yes');
end;
exports
GetCommand;
begin
end.