Wie wäre es mit lazy load, also die Prozeduren einer
DLL in einer Klasse/
Unit kapseln und die Prozeduren indirekt aufrufen, d.h. für jede
DLL-Prozedur folgendes Pattern programmieren:
Delphi-Quellcode:
Var
myDLLProcPtr : Procedure (foo : TBar);
Procedure LazyLoadLibary;
Begin
if hLibrary<>0then exit;
hLibrary := LoadLibrary('TheDLL.DLL');
myDLLProcPtr := GetProcPtr(hLibary,'MyProcedure');
...
End;
Procedure MyDLLProc (foo : TBar);
Begin
LazyLoadLibrary;
myDLLProcPtr(foo);
End;
DLLs werden erst dann geladen, wenn sie benötigt werden. Zeitkritische Libraries können explizit geladen werden, auch über Threads. Dann hast Du das beste aus beiden Welten: Du lädst nur Libraries, die Du benötigst und die, die kritisch sind, werden am Anfang in Threads geladen.