Hallo!
Vor einiger Zeit habe ich hier eine Frage zu Interfaces gepostet. Als Antwort erhielt ich u.a. folgenden Link:
http://www.delphipraxis.net/internal...=405336#405336
Im folgenden Code wird die
DLL, die ein Plugin enthält, das mit Interfaces arbeitet, nicht geladen. Kennt jemand den Grund dafür?
Delphi-Quellcode:
procedure TForm1.mCfgToolsClick(Sender: TObject);
type
TProcInitPlg =
function: IPlugin;
stdcall;
var
fName:
string;
iPlg: IPlugin;
aProc: TProcInitPlg;
hDLL: HWND;
fProc: TFarProc;
mApp: TApp;
begin
ShowMessage(GetCurrentDir);
//hab die .dll extra dahin kopiert!
with TOpenDialog.Create(
nil)
do begin
if Execute
then
fName := FileName
else begin ShowMessage('
Datei existiert nicht!'); Exit;
end;
end;
(*
fName := GetCurrentDir;
if fName[Length(fName)]<>'\' then fName := fName + '\';
fName := fName + 'plugin.dll';
*)
hDll := LoadLibrary(@fName[1]);
fProc := GetProcAddress(hDLL,'
InitPlugin');
if fProc <>
nil then begin
@aProc := fProc;
end else begin ShowMessage('
DLL konnte nicht geladen werden!'); Exit;
end;
iPlg := aProc;
showMessage(iPlg.GetName);
iPlg :=
nil;
FreeLibrary(hDLL);
end;
Oder ist es die Prozedur, die er nicht findet? Wenn ich die
Unit ShareMem als ertes in meiner Formular
Unit aufführe, erhalte ich ein Meldungsfenster mit dem Titel "Fehler beim Starten des Programms" und der Meldung "Die Datei Delphimm.dll ist verknüpft mit dem fehlenden Export-BORLNDMM.DLL-DunpBlocks". Was hat das zu bedeuten? Der Code für die
Dll ist exakt der gleiche, wie in dem Thread, der oben als Link angegeben ist.
Schon mal Danke im Voraus für Eure Hilfe sagt
Delphifan2004