Thema: Delphi DLL wird zu oft geladen!

Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#8

Re: DLL wird zu oft geladen!

  Alt 22. Mär 2006, 11:23
folgender Test:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  windows;


procedure blub; external 'F:\delphi\dlltest\test.dllname 'blub';
procedure blub2; external 'test.dllname 'blub';

begin
  blub;
  blub2;
end.
Delphi-Quellcode:
library test;

uses
  windows;

procedure blub;
asm
  nop
end;

exports blub;

begin
  MessageBoxA(0,'test',nil,0);
end.

Ergibt 2 mal die MessageBoxA mit statsicher einbindung von unterschiedlichen Pfaden.
Macht man es aber dynamisch (und das sollte man immer bei Pfadangabe) dann wird die dll nur ienmal geladen.

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  windows;


var blub: procedure;
var blub2: procedure;

begin
  @blub := GetProcAddress(LoadLibrary('F:\delphi\dlltest\test.dll'),'blub');
  @blub2 :=GetProcAddress( LoadLibrary('test.dll'),'blub');
  blub;
  blub2;
end.

Und es liegt dann an Windows, wenn er den absoluten Pfad (bei schon einer geladenen Dll) mit dem relativen Pfad als gleich ansehen soll und nicht an Delphi (statisch = Importtabelle = delphi kann nix dafür macht nur des was der Programmierer sagt)
Obwohl man dann noch darüber diskutieren kann obs am Programmierer oder wirklich an Windows liegt bei unterschiedlichen Pfaden.

Trotzdem: Wer eine statische Einbindung macht ist selbst schuld ^^
Bevor du alles umstruktuierst versuchs erstmal mit der dynamischen Einbindung.


PS: Entäuschend ist es eher wenn man keine Ahnung hat und es dann einfach mal auf die Programmiersprache / Umgebung schiebt.
  Mit Zitat antworten Zitat