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 verschillende applicaties kunnen worden gebruikt. Hun extensie is .dll. Ze zijn voor het eerst in 1964 in Multics gebruikt en worden sinds 1985 in Windows toegepast. Een dynamic-link library is het tegenovergestelde van een statisch gekoppelde bibliotheek, die in elk programma dat die gebruikt moet worden ingebouwd. De bedoeling van een DLL is dat de bibliotheek alleen eenmaal op de harde schijf hoeft te worden bewaard, waardoor schijfruimte wordt bespaard en dat ze ook maar eenmaal in het geheugen hoeft te worden geladen, terwijl toch verschillende 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 in Windows voor de kernel gebruikt.

Het bestandsformaat van een DLL is hetzelfde als dat van een executable met extensie .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 New Executable NE. Het grote verschil tussen DLL en EXE is dat een DLL niet meteen kan worden uitgevoerd, 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 als een DLL worden gebruikt. Een programma kan een EXE op dezelfde manier laden als een DLL.

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. Dit wordt tegenwoordig verholpen door strikte versienummers te gebruiken.

Linux maakt ook gebruik van dynamisch gelinkte bibliotheken maar noemt die shared objects. Die hebben extensie .so.