OK. Das nächste Mal versuche ich es doch nochmal, bevor ich poste... Funktioniert.
Aber leider gibt es ein Problem: beim entladen der
DLL mit
FreeLibrary(hDLL);
gibt es immer, dass heißt auch, wenn ich überhaupt nicht auf die Daten zugreife, eine AccessViolation.
Hier mal der ganze Source:
Delphi-Quellcode:
procedure TMainFrm.mCfgToolsClick(Sender: TObject);
type
TProcInitPlg = function: IPlugin; stdcall;
var
fName: string;
iPlg: IPlugin;
aProc: TProcInitPlg;
hDLL: HWND;
fProc: TFarProc;
mApp: TApp;
begin
with TOpenDialog.Create(nil) do begin
if Execute then
fName := FileName
else Exit;
end;
hDll := LoadLibrary(@fName[1]);
fProc := GetProcAddress(hDLL,'InitPlugin');
if fProc <> nil then begin
@aProc := fProc;
end else Exit;
iPlg := aProc;
showMessage(iPlg.GetName);
FreeLibrary(hDLL);
end;
Chris