close

Dinamikus hivatkozási könyvtár

Ugrás a navigációhoz Ugrás a kereséshez
dinamikus hivatkozási könyvtár
Crystal Clear mimetype make.png
fejlesztő
Microsoft
Általános információ
fájlkiterjesztés .dll
mím-típusú application/x-msdownload
Egységes típusazonosító com.microsoft.windows-dynamic-link-library
mágikus szám MZ
konténer számára megosztott könyvtár
nyílt formátum ?

A dinamikus hivatkozási könyvtár ( DLL ) a végrehajtható kódot tartalmazó fájlok kifejezése, amelyeket az operációs rendszer kérésre betölt egy programhoz . Ez a név kizárólag a Windows operációs rendszerekre vonatkozik, a ".dll" a kiterjesztése , amellyel ezek a fájlok azonosíthatók, bár ez a fogalom gyakorlatilag minden modern operációs rendszerben megtalálható.

Előnyök

A DLL-ek statikus könyvtárak fejlődésének tekinthetők (különböző rendszereken), és hasonlóképpen olyan funkciókat vagy erőforrásokat tartalmaznak, amelyeket más alkalmazások használnak. Használata bizonyos előnyökkel jár:

  • Csökkentik a végrehajtható fájlok méretét: A kód nagy része könyvtárakban tárolható, és nem magában a végrehajtható fájlban, ami jobb modularizációt eredményez.
  • Több alkalmazás között is megoszthatók: Ha a kód elég általános, akkor több alkalmazáshoz is hasznos lehet (például az MFC egy dinamikus könyvtár általános osztályokkal, amelyek lefedik a Windows grafikus API -ját , és a legtöbb alkalmazás használja).
  • Megkönnyítik a rendszermemória kezelését és használatát: A dinamikus betöltés lehetővé teszi az operációs rendszer számára, hogy olyan algoritmusokat alkalmazzon, amelyek javítják a rendszer teljesítményét a könyvtárak betöltésekor. Továbbá, mivel megosztottak, elegendő egy másolatot a memóriában tartani az összes azt használó program számára.
  • Nagyobb rugalmasságot biztosítanak a változásokkal szemben: A dinamikus könyvtár új verziójának terjesztésével javítható a teljesítmény vagy javítható a kis hibák. Ezt a javítást vagy továbbfejlesztést ismét minden olyan alkalmazás kihasználja, amely megosztja a könyvtárat.

"DLL pokol"

Azonban nem minden előny. Windows rendszereken a DLL-ek nagyon gyakoriak, és sok program ugyanazokat a dinamikus hivatkozási könyvtárakat használja. De az evolúció következtében mindegyik könyvtár fejlődik, beleértve a fejlesztéseket, de úgy módosítja őket, hogy azok már nem kompatibilisek. Ez két nem kívánt hatást válthat ki:

  • Hogy egy programtelepítés lecseréli a DLL-t egy új, inkompatibilis verzióra.
  • A program eltávolítása törli a megosztott DLL-t.

Mindkét esetben az az eredmény, hogy a régi verziót használó programok leállnak. Ezeket a problémákat " DLL pokolnak " nevezték.

A Windows modern verziói és az újabb MSI -telepítési parancsfájlok (különösen a rezidens telepítési funkció) megoldják és megoldják ezt a problémát. A probléma azonban továbbra is fennáll, ha más telepítőket (régebbi verziókat) használnak, vagy kézi módosításokat hajtanak végre.

Könyvtárak importálása

A statikus könyvtárakhoz hasonlóan a DLL-ek importkönyvtárai is .lib kiterjesztéssel rendelkeznek. Például a kernel32.dll , az alapvető Windows-funkciók fő dinamikus könyvtára a kernel32.lib-en keresztül kapcsolódik. Az importkönyvtárak és a statikus könyvtárak megkülönböztetéséhez a méretet is figyelembe lehet venni, mivel az importkönyvtárak csak a DLL-re utaló szimbólumokat tartalmaznak. Ezért az importkönyvtár mérete általában kicsi. Azonban mindkét esetben a Unix ar formátumot használják .

A végrehajtható fájl generálásakor a statikus könyvtárakat használják a külső szimbólumok feloldására, amelyek a DLL-re hivatkoznak. A végrehajtható fájl tartalmaz egy IAT import címtáblázatot ( Import Address Table ), amely az összes DLL függvényhívásra hivatkozik (minden DLL függvény saját IAT bejegyzést tartalmaz). Futás közben az IAT bejegyzései lecserélődnek a DLL-függvények tényleges memóriacímeire. [ 1 ]

Lásd még

Hivatkozások

Külső linkek