Dinamikus linkkönyvtár
Kiterjesztés | .dll |
---|---|
MIME típus | application/vnd.microsoft.portable-executable, application/x-msdownload |
Fejlesztette | Az IBM és a Microsoft |
Formátum típusa | Szoftvertár |
A Dynamic Link Library (francia nyelven: dinamikus link könyvtár ) egy olyan szoftverkönyvtár, amelynek funkcióit szükség esetén egy program betölti a memóriába a végrehajtás során, szemben a statikus vagy megosztott szoftverkönyvtárakkal, amelyeknek a funkciói a kezdet előtt vannak a memóriában betöltve. a program végrehajtásának.
A .dll egy fájlnévkiterjesztés, amelyet a Dynamic Link Library-t tartalmazó fájlok használnak .
Ezeket a szoftverkönyvtárakat a Multics fejlesztette ki 1964-ben, és 1985 óta léteznek a Windows rendszerben. Ezek a Windows operációs rendszerek alapját képezik, és interfészek , illesztőprogramok , widgetek és betűtípusok programozására szolgálnak .
A számítógépes program a funkciókat tartalmazó forrásfájlokból épül fel . A szoftverkönyvtárak a fájlokban tárolt funkciók kötegei. A szoftverkönyvtár általában ugyanazon témakör körüli funkciókat tartalmaz. Ezzel a technikával a könyvtár egyik funkciójának későbbi módosítása megköveteli annak újbóli létrehozását, anélkül, hogy a teljes alkalmazást újra létre kellene hozni.
Ez a technika megköveteli, hogy a könyvtárfájlok a memóriába kerüljenek az őket használó programmal egyidőben, ezután egy program - a linker - működőképessé teszi az alkalmazást azáltal, hogy összekapcsolja a különböző fájlokat.
A szoftverkönyvtárak lehetnek:
A statikus könyvtár beágyazódik egy programba, és az összekapcsolás annak elkészítése során megtörténik. Ha egy statikus könyvtárat megváltoztatnak, minden, azt használó programot át kell építeni a változtatások beépítésére;
A megosztott könyvtár nem épül be az azt használó programokba, hanem azokhoz kapcsolódik, amikor betöltődnek, vagyis közvetlenül a program futtatása előtt. A megosztott könyvtárat sok program használhatja, és a könyvtár megváltoztatásához nem szükséges a programok újjáépítése, mindaddig , amíg a könyvtár programozási felülete nem változik;
A dinamikus könyvtárak megegyeznek a megosztott könyvtárakkal, de más módon használják őket. Az ilyen könyvtárak akkor kapcsolódnak az alkalmazáshoz, amikor az szükséges. Az ezeket használó programok tartalmazzák a betöltésre és a linkelésre vonatkozó utasításokat.
A DLL-ek által használt dinamikus összekapcsolási technikában az összekapcsolási műveletet két szakaszban hajtják végre: először az alkalmazás felépítésekor a linker létrehoz összekötőket, majd betöltéskor - közvetlenül az alkalmazás futtatása előtt - összekötik a csatlakozókat. A DLL-ek COFF formátumban vannak , az IBM AIX rendszerben is használják .
A DLL-ek a Windows operációs rendszerek egyik alapját képezik . A Windows belső funkcióit a DLL-fájlok által megvalósított programozási interfészek teszik elérhetővé a programok számára . A három fő könyvtár: User32.dll (a felhasználói felület manipulálása), GDI32.dll (nyomtató és megjelenítő eszközök kezelése) és Kernel32.dll (a fájlokhoz és a folyamathoz kapcsolódó Windows rendszermag-funkciók használata). A programozásban gyakran használt egyéb Windows fájlok a comdlg32.dll , MAPI32.dll , netapi32.dll és winmm.dll . A DLL fájlokat számos kiterjesztéshez is használják: illesztőprogramok , párbeszédpanelek , kütyük , betűtípusok .
A Windows lehetőséget kínál a DLL-ek eltérítésére vagy ellopására. A jogos okok mellett ezeket a lehetőségeket kihasználják a rootkitek is , amelyek az operációs rendszer DLL-jeinek ellopásával a felhasználó tudta nélkül injektálják a funkcionalitást.
Az olyan nyelvek, mint a C , a C ++ vagy a Delphi , képesek DLL-ek létrehozására, amelyeket a programok kihasználhatnak. Számos fejlesztési eszköz, amely futásidejű könyvtárakat kínál, mint például a Microsoft Foundation Class Library (MFC) vagy a Borland Visual Component Library (VCL), vagy statikus kapcsolatot (a kód közvetlen integrálása a futtatható fájlba) vagy dinamikus kapcsolatot kínál (ezt követően a könyvtárat DLL formájában terjesztik).
A DLL használata lehetővé teszi a kód elérhetővé tételét és az alkalmazás architektúrájának modulárisvá tételét. Ennek frissítése csak elavult DLL-ek cseréjével is elvégezhető. A DLL több egyidejű verziójának használata azonban problematikus a Windows alatt, és bizonyos inkompatibilitásokhoz vezet a DLL Hell kifejezés alatt csoportosítva .
A DLL-ek létrehozása megkönnyíti azok cseréjét új funkciók hozzáadásához és a meglévők fejlesztéséhez. A helyettesítés azonban néha a meglévő funkciók mélyreható módosításához vezet, ami meghibásodásokhoz és az azt használó programok hibás működéséhez vezet. Ezenkívül az egyik fordítóval készített DLL-ek általában nem kompatibilisek egy másik fordítóval készített futtatható fájlokkal.
Ez egy ismert oka hívások műszaki szolgálatok, amelyek keresztelték ezt a jelenséget DLL pokol „a fene a DLL” angolul.
Ha hiányzik egy DLL fájl a felhasználó számítógépéről, az azt használó program elindítása egy DLL nem található üzenetet eredményez, amelyet a felhasználó nem használ. Ha a DLL létezik, de nem érvényes a programra, akkor a programnak nincs módja annak ellenőrzésére, ami DynaLink hibaüzeneteket okozhat, vagy akár a program összeomlását is okozhatja . Az ilyen problémák egyik oka az, hogy a Windows nem biztosít belső verzióellenőrzési mechanizmust - egy olyan mechanizmust, amely biztosítja, hogy egy program társuljon azzal a könyvtárral, amelyre építették.
A programozók egyike a DLL pokol elleni harcnak az, ha kifejezetten betöltik a DLL fájlt: ahelyett, hogy a fájl automatikusan betöltődne, amikor az azt használó program elindul, a program azt a funkciót használja LoadLibrary, amely betölti a létező fájlt. A fő különbség e módszer és a klasszikus módszer között az, hogy a futtatható fájl nem tudja előre a szükséges funkciók címét.
Egy másik módszer az, hogy a DLL forráskódját vagy annak egy részét átmásoljuk a jövő futtatható fájljába annak érdekében, hogy az említett DLL nélkül megtörténjen. Ez azonban lehet illegális (gyakran inkompatibilis licencek miatt) vagy műszakilag lehetetlen (általában azért, mert a DLL forráskódja nem áll rendelkezésre), de még akkor is, ha ez lehetséges és legális, a használat miatt általában kizárt .