Dynamisk lenkebibliotek
| dynamisk lenkebibliotek | ||
|---|---|---|
|
| ||
| utvikler | ||
| Microsoft | ||
| Generell informasjon | ||
| filutvidelse |
.dll | |
| mime-type |
application/x-msdownload | |
| Uniform Type Identifier | com.microsoft.windows-dynamic-link-library | |
| magisk tall |
MZ | |
| beholder for | delt bibliotek | |
| åpent format | ? | |
Et dynamisk lenkebibliotek ( DLL ) er betegnelsen på filer som inneholder kjørbar kode som lastes inn ved behov av operativsystemet for et program . Dette navnet er eksklusivt for Windows - operativsystemer, med ".dll" som utvidelsen som disse filene identifiseres med, selv om konseptet eksisterer i praktisk talt alle moderne operativsystemer.
Fordeler
DLL-er er eller kan sees på som utviklingen av statiske biblioteker (på forskjellige systemer) og inneholder analogt funksjonalitet eller ressurser som brukes av andre applikasjoner. Bruken gir noen fordeler:
- De reduserer størrelsen på kjørbare filer: Mye av koden kan lagres i biblioteker og ikke i selve den kjørbare, noe som resulterer i bedre modularisering.
- De kan deles mellom flere applikasjoner: Hvis koden er generisk nok, kan den være nyttig for flere applikasjoner (for eksempel er MFC et dynamisk bibliotek med generiske klasser som dekker Windows grafiske API og brukes av de fleste applikasjoner) .
- De letter administrasjon og bruk av systemminne: Dynamisk lasting lar operativsystemet bruke algoritmer som forbedrer systemytelsen når disse bibliotekene lastes. Siden de er delt, er det nok å beholde en kopi i minnet for alle programmene som bruker den.
- De gir større fleksibilitet i møte med endringer: Det er mulig å forbedre ytelsen eller fikse små feil ved kun å distribuere en ny versjon av det dynamiske biblioteket. Igjen, denne reparasjonen eller forbedringen vil bli utnyttet av alle applikasjoner som deler biblioteket.
"DLL Hell"
Men ikke alle fordeler. På Windows-systemer er DLL-er veldig vanlige, og mange programmer bruker de samme dynamiske koblingsbibliotekene. Men på grunn av evolusjon, utvikler hvert av bibliotekene seg med forbedringer, men modifiserer dem på en slik måte at de ikke lenger er kompatible. Dette kan gi to uønskede effekter:
- At en programinstallasjon erstatter en DLL med en ny inkompatibel versjon.
- At avinstallering av programmet sletter en delt DLL.
I begge tilfeller er resultatet at programmene som brukte den gamle versjonen slutter å fungere. Disse problemene ble kalt " DLL-helvete ".
Moderne versjoner av Windows og nyere MSI -installasjonsskript (spesielt funksjonen for faste installasjoner) adresserer og løser dette problemet. Problemet vedvarer imidlertid når andre installatører (eldre versjoner) brukes eller manuelle modifikasjoner gjøres.
Importer biblioteker
I likhet med de statiske bibliotekene har importbibliotekene for DLL-er en .lib-utvidelse. For eksempel er kernel32.dll , det dynamiske hovedbiblioteket for Windows-kjernefunksjoner, koblet via kernel32.lib. For å skille et importbibliotek fra et statisk bibliotek, kan størrelse tas i betraktning, siden importbiblioteker bare inneholder symboler som refererer til DLL. Derfor er størrelsen på et importbibliotek vanligvis liten. Imidlertid brukes Unix ar -formatet i begge tilfeller .
Når den kjørbare filen er generert, brukes de statiske bibliotekene til å løse de eksterne symbolene, som refererer til DLL. Den kjørbare inneholder en IAT-importadressetabell ( Import Address Table ) som alle DLL-funksjonskall refereres til (hver DLL-funksjon inneholder sin egen IAT-oppføring). Ved kjøretid erstattes oppføringene i IAT med de faktiske minneadressene til DLL-funksjonene. [ 1 ]
Se også
- Grafisk grensesnitt
- Ressurshacker
- Tillegg: Windows DLL-biblioteker
- ImpLib SDK
Referanser
Eksterne lenker
- Hva er en DLL? , Microsoft.
- Hva er en DLL-fil?