Einzelnen Beitrag anzeigen

StanY

Registriert seit: 6. Aug 2004
145 Beiträge
 
#6

Re: Dll zur Laufzeit verändern?

  Alt 27. Okt 2004, 16:11
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.
  Mit Zitat antworten Zitat