Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#11

AW: DLL nicht automatisch laden

  Alt 3. Aug 2020, 12:34
Statisches Linken (im Delphi/Windows), da wird der Link in die Import-Tabelle des PE-Headers eingetragen,
welche von Windows gefüllt wird, bevor der ProgrammCode anfängt mit Arbeiten.

Beim Delayed-Loading gibt es auch diese "statische" Tabelle,
aber die ist zu Beginn mit Dummyprozeduren gefüllt.
Und erst beim Aufruf einer dieser Prozeduren wird die DLL geladen und die Tabelle mit den richtigen Zeigern gefüllt.
https://docs.microsoft.com/de-de/cpp...s?view=vs-2019
http://docwiki.embarcadero.com/RADSt...indows-only.29

Beim dynamischen Laden führt der Entwickler das LoadLibrary aus und sucht via GetProcAddress seine Methoden und speichert sie in eigenen Variablen.



Für Windows ist Delayed-Loading beim Programmcode viel "schöner",
wenn man damit leben kann, dass Microsoft hier eine echt besch*** Fehlermeldung eingebaut hat, wenn das Laden fehlschlägt, sollte die DLL/Funktion fehlen.
Außerdem wurde im Delphi das Entladen nicht implementiert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Aug 2020 um 12:40 Uhr)
  Mit Zitat antworten Zitat