Dinamikus hivatkozási könyvtár
| dinamikus hivatkozási könyvtár | ||
|---|---|---|
|
| ||
| 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
- Grafikus felület
- Erőforrás Hacker
- Kiegészítés: Windows DLL-könyvtárak
- ImpLib SDK
Hivatkozások
Külső linkek
- Mi az a DLL? , Microsoft.
- Mi az a DLL fájl?