Naar inhoud springen

Dynamic-link library

Uit Wikipedia, de vrije encyclopedie

Een dynamic-link library, ook wel bekend als DLL, is een bibliotheek met functies, die door meerdere applicaties gebruikt kunnen worden. Het is het tegenovergestelde van een statisch gekoppelde bibliotheek, waarbij de bibliotheek in elk programma dat de bibliotheek gebruikt moet worden ingebouwd.

De bedoeling van een DLL is dat de bibliotheek slechts eenmaal op de harde schijf hoeft te worden bewaard, waardoor schijfruimte bespaard wordt, en dat ze ook maar eenmaal in het geheugen hoeft te worden geladen, terwijl toch meerdere toepassingen er gebruik van kunnen maken.

Een DLL wordt geladen zodra de eerste applicatie hem nodig heeft en kan door de kernel uit het geheugen worden verwijderd zodra alle applicaties die de DLL in gebruik hadden deze hebben afgemeld. DLL's worden ook gebruikt in Microsoft Windows, waarin DLL's zitten die voor de kernel gebruikt worden.

Een nadeel van DLL's is dat er in het verleden dikwijls verschillende versies van DLL's in omloop waren, waardoor er conflicten ontstonden, de zogenaamde dll hell. Tegenwoordig wordt dit verholpen door strikte versienummers te gebruiken.

Linux maakt ook gebruik van dynamisch gelinkte bibliotheken maar noemt die 'shared objects' (extensie .so).

Bestandsformaat

[bewerken | brontekst bewerken]

Het bestandsformaat van een DLL is hetzelfde als dat van een executable (EXE), maar verschillende versies van Windows gebruiken een ander formaat. 32 bit- en 64 bit-Windows-versies gebruiken Portable Executable (PE), en 16 bit-Windowsversies gebruiken New Executable (NE).

Het grote verschil tussen DLL en EXE is dat een DLL niet rechtstreeks uitgevoerd kan worden, omdat het besturingssysteem een entry point nodig heeft om de uitvoering te starten. Windows heeft een hulpprogramma (RUNDLL.EXE/RUNDLL32.EXE) om functies in een DLL uit te voeren.

Aangezien ze hetzelfde formaat hebben kan een EXE gebruikt worden als een DLL. Een programma kan een EXE op dezelfde manier laden als een DLL.