Hallo zusammen,
ich habe ein Problem: ich programmiere gerade ein Projekt in dem viele Teile in eigene DLLs ausgelagert werden sollen.
So habe ich schon ein paar DLLs erzeugt, die gut funktionieren.
Eine davon ist z.B. eine, die sich um Logfiles kümmert und die entsprechende Funktion wird von allen DLLs auch benutzt.
Als ich mehrere DLLs in das Hauptprogramm eingebunden habe gab es dann aber Seltsamkeiten. Nach einigen Tests habe ich herausgefunden, dass z.B. diese Logfile-
DLL für jedes Modul wiederum eigenständig geladen wurde.
So hat mir auch z.B. der ProcessExplorer zwei identische DLLs gezeigt, die mein Programm dann geladen hat.
Beide DLLs wissen voneinander nichts und jede "gehört" zu dem jeweils aufrufenden Modul (andere
DLL oder Hauptprogramm).
Das ist für mein Project jetzt nicht sehr hilfreich. Ich dachte eigentlich eine
DLL wird einmal in den Adressraum geladen und dann entsprechend vom ganzen Prozess aus benutzt.
In Zukunft sollen die DLLs auch überkreuz bekannt sein udn da weiss ich noch garnicht, was dann passieren wird.
Wie kann ich das hinbekommen? Oder mache ich irgendwas falsch?
Ich benutze übrigends Delphi 6. Die DLLs werden (noch) statisch eingebunden:
Delphi-Quellcode:
const
LOGDLLNAME = '
.\dll\Solid_Log.dll';
procedure WriteToLog (Infotext : shortstring; Level : integer);
external LOGDLLNAME;
procedure LOGinitialize;
external LOGDLLNAME
name '
DLLinitialize';
procedure LOGfinalize;
external LOGDLLNAME
name '
DLLfinalize';
Tschüss
/\/\arcus
p.s. das "stdcall" fehlt, das ist hier aber richtig.