Hur man åtgärdar DLL-fel

Så snart ett systemfelsfönster dyker upp framför dig och nämner en saknad DLL-fil, uppstår genast frågan: Vad är en DLL-fil? Varför behövs de?

DLL-filer är dynamiska bibliotek som ofta anropas av program när de körs. DLL-filer är ett viktigt element när det gäller att minska kodens subtilitet och förbättra den totala prestandan.

På persondatorer med Windows-system uppstår ofta DLL-filfel som gör att vissa program inte kan köras. Felmeddelanden visas som anger att det saknas en viss .DLL-fil. Problemet är löst eftersom du måste hitta den specifika filen på Internet för att programmet ska börja fungera.

Allt om DLL-filer

På grund av hur många de är och hur de används är DLL-filer vanligtvis huvudfokus för en betydande del av de fel som ses när man startar, använder och stänger av Windows. Det är dock relativt ovanligt att öppna en DLL-fil eftersom du aldrig bör redigera en sådan fil, och redigeringen i sig kommer förmodligen att leda till problem med program och andra DLL-filer.

Koden i en DLL delas av alla processer som använder DLL-filen. Med andra ord upptar de en enda plats i det fysiska minnet men befinner sig inte i sidfilsområdet. Positionsoberoende kod används inte i Windows för DLL:er eftersom den flyttas när den laddas för att fixera alla dess ingångspunktsadresser i fritt utrymme i det förberedande minnet hemkurs för att ladda DLL:er.

DLL-filer i gamla varianter av Windows

Äldre versioner av Windows, där varje pågående process upptog ett enda stort problemlösningsområde, behövde endast en kopia av DLL-koden för att alla funktioner skulle fungera korrekt.

Anta att vissa program eller kombinationer av program från de nedladdade DLL:erna inte har dessa adresser lediga. Det skulle då vara nödvändigt att göra en extra kopia av DLL-koden och tillämpa en unik uppsättning flyttbara inmatningskoefficienter. När det fysiska minnet måste återställas måste en återställning göras i den ockuperade kodsektionen och dess innehåll och snabba omladdningar från DLL-filen. En liknande arkitektonisk idé, som gjorde det möjligt för GDI att ladda helt andra enhetsdrivrutiner, gjorde det möjligt för Windows att ladda andra Windows-paket och för dessa program att anropa API:er från de delade USER- och GDI-biblioteken.

På grund av detta kan en DLL-fil förse företag med mer än ett verktyg samtidigt. Om en beroende DLL uppgraderas till en modernare version, skrivs över med en äldre version eller tas bort från datorn kanske detta system som räknar med DLL-filen inte fungerar som det ska. ActiveX-kontroller, registerdata från kontrollpanelen och enhetsdrivrutiner är några av Windows information som Dynamic Link Libraries.

Några beprövade metoder för att åtgärda DLL-fel:

  • Använd Windows Resource Protection Tool eller System File Checker (SFC).
  • Ladda ner saknade eller skadade DLL-filer och lägg dem i systemmappen
  • Uppdatera Microsoft Visual C++ Redistributable.
  • Uppdatera Microsoft .NET Framework
  • Installera om problemprogrammet
  • Begär en kopia av DLL-filerna från programmets tillverkare

Ytterligare information om DLL-filer

Bindade körbara filer laddas något tidigare om de körs i samma miljö som de kompilerats för och exakt samma tid om de körs i andra miljöer, så det finns ingen nackdel med att binda importen. Förresten är alla vanliga Windows-ändamål knutna till DLLs system för deras respektive Windows-lansering.

Ett utmärkt alternativ för att binda en applikations import till sin målmiljö är att göra det i samband med installationen av applikationen. Det ändrar dock kontrollsumman för den körbara filen, så det är inte något som kan utföras med signerade program eller paket som hanteras av ett program för konfigurationsadministration som använder kontrollsummor för att hantera versioner i filen. I takt med att nyare Windows-varianter har gått ifrån att ha monterade adresser för varje laddat bibliotek minskar möjligheten och värdet av att binda en körbar fil.

Medan de flesta Dynamic Link Libraries slutar med filändelsen .DLL kan andra använda .OCX, .CPL eller .DRV. Om vissa paketerare för körbara filer komprimerar en DLL (t.ex. UPX), markeras alla dess kodsektioner som läs- och skrivbara och kan vara odelade. Kodsektioner som är skriv- och läsbara är, i likhet med sektioner för icke-offentlig kunskap, personliga för varje process.

DLL:er med delade kunskapsavsnitt bör alltså inte komprimeras om de är avsedda att användas samtidigt av flera paket, eftersom varje programinstans måste bära med sig sin kopia av DLL:n, vilket leder till ökad minnesförbrukning. Denna idé om att öka arbetssystemet från en uppsättning dynamiskt laddade bibliotek är en kärnidé i Windows som kvarstår sedan 2015. DLL:er presenterar de vanliga fördelarna med delade bibliotek, liknande modularitet.