Dinamikus csatolású könyvtár

A DLL (Dynamic Link Library, szó szerint „dinamikus csatolású/hivatkozású könyvtár”) kifejezés az informatikában a Windows operációs rendszerek alkalmazásainak (programjainak) segédfájljait, egészen pontosan az ún. megosztott könyvtárakat jelentik: ezek eljárásokat (függvényeket), a más programokhoz, illetve rendszerekhez való illeszkedést (kompatibilitást) segítő eszközöket, esetleg a programok ikonjait tárolják (utóbbira példa a Windows rendszerkönyvtárában található shell32.dll, moricons.dll,  setupapi.dll vagy pifmgr.dll). A DLL-ek .dll kiterjesztésű fájlokként tárolódnak (lásd még: fájlformátum). Egy-egy alkalmazáshoz általában több DLL is tartozik, amelyek nélkül az alkalmazás nem tud működni, és fordítva, egy adott DLL általában több alkalmazás futtatásához is szükséges, hiszen éppen ez jelenti azt, hogy e fájlok tartalma megosztott.

A DLL kifejezést nehéz magyarra fordítani, a Windows honosítását végző informatikai szakembereknek sem sikerült egységes nyelvezetet alkotniuk (de az eredeti, angol nyelvű Windows terminológia sem egységes). A különböző változatokban előfordul a „dinamikus hivatkozású könyvtár”, a „dinamikus szerkesztésű könyvtár” fordítás, jelenleg pedig a „dinamikus csatolású könyvtár” használatos. Néhány Windows rendszerben egyszerűen horribile dictu az „alkalmazás kiterjesztése” (Windows 98 második kiadás) vagy „alkalmazáskiterjesztés” (Windows XP) kifejezés is látható, („application extension”, ami megint csak roppant szerencsétlen a fájlnevek kiterjesztéseivel való keverhetőség miatt), vélhetőleg azért, nehogy elijesszék az embert a hosszú idegen kifejezések.

Példa: a Windows rendszerkönyvtárban található commdlg.dll fájlban többek közt azon egyszerű párbeszédablakok leírásai tárolódnak, melyeken keresztül egy-egy programmal „beszélgetni” szoktunk. E DLL fájlneve egyébként a „common dialog” kifejezés rövidítése.

A „dinamikus” szerkesztés, csatolás stb. kifejezések arra próbálnak utalni, hogy a DLL-ben tárolt adatok csak akkor töltődnek be az operatív memóriába, ha azokat a program meghívja, vagyis ilyenkor dinamikusan szerkesztődik össze a hívó program és a DLL-ből meghívott eljárás.

A „könyvtár” (library) kifejezés egyszerűen arra utal, hogy a fájl adatokat tárol, amelyeket a Windows-programok szükség esetén „kikölcsönöznek”.
A magyar fordítás kicsit szerencsétlen, mert a régebbi Windows rendszerek integráns részeként is létező DOS rendszerek nyelvén a „könyvtár” kifejezés már foglalt volt a meghajtók adatokat nem tartalmazó logikai egységeire, melyek a fájlokat tartalmazzák; bár ezeket az egységeket a Windows terminológiája már „mappának” nevezi. A könyvtár elnevezés helyett talán szerencsésebb lenne a „függvénytár” elnevezés. Ezt a terminológiai káoszt egyébként a DOS magyarítása idézte elő: az angol DOS-os „directory” szó ugyanis nem könyvtárat, hanem címtárat, tartalomjegyzéket jelent.

A DLL-eknek sok előnye és hátránya van. Alapvetően azért hozták létre őket, hogy az egyéni programozók könnyebben készíthessenek a Windows rendszerek alatt futó programokat, a DLL-ekben tárolt függvényeket felhasználva, és ezáltal a Windows használhatósága és elterjedtsége még nagyobb legyen. A rájuk való építés azt is eredményezi, hogy sok DLL-fájl nélkül az őket meghívó programok nem képesek működni. Tapasztalatlan felhasználók sokszor egyszerűen törlik ezeket, és aztán észreveszik, hogy az illető program nem fut, váratlan hibát okoz, vagy újratelepítését kéri.

A Windows-programoknak, különösen a rendszerprogramoknak (melyek a Windows operációs rendszer integráns részét alkotják, és azzal együtt telepítésre kerülnek) más segédfájljaik is vannak: a legfontosabbak a *.dat fájlok („adatfájlok”), és a .bin fájlok („bináris fájlok” [ide vehetjük még az .ico fájlokat, vagyis az ikonokat]).

Lásd még
 DLL hell

Irodalom 
 Hart, Johnson. Windows System Programming Third Edition. Addison-Wesley, 2005. 
 Rector, Brent et al. Win32 Programming. Addison-Wesley Developers Press, 1997. .

További információk (angol) 
 __declspec C++ Language Reference on MSDN
 dllexport, dllimport on MSDN
 Dynamic-Link Libraries on MSDN
 What is a DLL? on Microsoft support site
 Dynamic-Link Library Functions on MSDN
 Microsoft Portable Executable and Common Object File Format Specification
 Simple C++ DLL Loading a Message Box Tutorial 
 Win32 DLL on www.functionx.com. Tutorial for making and using DLLs
 Delay Load Dlls Error Recovery on www.codemaestro.com.
 Loading a DLL from memory
 Creating a Windows DLL with Visual Basic
 Using DLLs from native Python code
 Common DLL Errors and Fixes in Windows Vista
 Microsoft specification for dll files

Számítógép-programozás
Microsoft Windows