Hvordan man retter DLL-fejl

Så snart et systemfejlvindue dukker op foran dig og nævner en manglende DLL, opstår spørgsmålet straks: Hvad er en DLL-fil? Hvorfor er de nødvendige?

DLL-filer er dynamiske biblioteker, som ofte kaldes af programmer, når de kører. DLL-filer er et vigtigt element, når det gælder om at reducere kodens subtilitet og forbedre den samlede ydeevne.

På pc'er, der kører Windows-systemer, opstår der ofte fejl i DLL-filer, som resulterer i, at nogle programmer ikke kan køre. Der vises fejlmeddelelser om, at der mangler en bestemt .DLL-fil. Problemet er løst, fordi du skal finde den pågældende fil på internettet, for at softwaren kan begynde at fungere.

Alt om DLL-filer

På grund af hvor mange der er, og hvordan de bruges, er DLL-filer normalt hovedfokus for en betydelig del af de fejl, der ses, når Windows startes, bruges og lukkes ned. Det er dog relativt sjældent at åbne en DLL-fil, da man faktisk aldrig bør redigere en sådan fil, og selve redigeringen vil sandsynligvis resultere i problemer med programmer og andre DLL'er.

Koden i en DLL deles af alle de processer, der bruger DLL'en. Med andre ord optager de en enkelt placering i den fysiske hukommelse, men befinder sig ikke i sidefilområdet. Positionsuafhængig kode anvendes ikke i Windows til DLL'er, fordi den flyttes, når den indlæses, for at fastgøre alle dens indgangspunktadresser på ledig plads i den forberedende hukommelseshjemkursus for at indlæse DLL'er.

DLL-filer i gamle varianter af Windows

Ældre versioner af Windows, hvor hver kørende proces optog et enkelt, stort problemløsningsområde, havde kun brug for én kopi af DLL-koden, for at alle funktioner kunne fungere korrekt.

Antag, at bestemte programmer eller kombinationer af programmer fra de downloadede DLL'er ikke har disse adresser ledige. Det vil i så fald være nødvendigt at lave en ekstra kopi af DLL-koden og anvende et unikt sæt relokaliserbare inputkoefficienter. Når den fysiske hukommelse skal genoprettes, skal der foretages en nulstilling i den besatte kodedel og dens indhold og hurtig genindlæsning fra DLL-filen. En lignende arkitektonisk idé, som gjorde det muligt for GDI at indlæse helt andre enhedsdrivere, gjorde det muligt for Windows at indlæse andre Windows-pakker, og for disse programmer at kalde API'er fra de fælles USER- og GDI-biblioteker.

På grund af dette kan en DLL-fil give virksomheder mere end ét hjælpeprogram på samme tid. Hvis en afhængig DLL opgraderes til en mere moderne version, overskrives med en ældre version eller fjernes fra pc'en, fungerer dette system, der tæller på DLL-filen, muligvis ikke, fordi det burde. ActiveX-kontroller, kontrolpanelets recordsdata og enhedsdrivere er nogle af Windows's oplysninger som Dynamic Link Libraries.

Et par gennemprøvede metoder til at rette DLL-fejl:

  • Brug Windows Resource Protection Tool eller System File Checker (SFC).
  • Download manglende eller beskadigede DLL-filer, og læg dem i systemmappen
  • Opdater Microsoft Visual C++ Redistributable.
  • Opdater Microsoft .NET Framework.
  • Geninstaller det problematiske program.
  • Anmod om en kopi af DLL-filerne fra producenten af programmet

Yderligere oplysninger om DLL-filer

Bundene eksekverbare filer indlæses noget hurtigere, hvis de køres i de samme omgivelser, som de var blevet kompileret til, og nøjagtigt på samme tid, hvis de køres i andre omgivelser, så der er ikke nogen ulempe ved at binde importen. I øvrigt er alle de sædvanlige Windows-formål knyttet til DLL'er systemet af deres respektive Windows-lancering.

Et glimrende alternativ til at binde et program's import til dets målmiljøer er i forbindelse med installationen af programmet'et. Ikke desto mindre ændrer det kontrolsummen af den eksekverbare fil, så det er ikke noget, der kan udføres med signerede programmer eller pakker, der administreres af et konfigurationsadministrationsprogram, der bruger kontrolsum til at håndtere versioner i filen. Efterhånden som nyere Windows-varianter er gået væk fra at have monterede adresser for hvert indlæst bibliotek, er muligheden og værdien af at binde en eksekverbar fil aftagende.

Mens de fleste dynamiske linkbiblioteker slutter med filtypenavnet .DLL, kan andre bruge .OCX, .CPL eller .DRV. Hvis bestemte pakkeprogrammer til eksekverbare filer komprimerer en DLL (f.eks. UPX), er alle dens kodedele markeret som læse- og skriveafsnit og kan være udelte. Kodeafsnit, der kan læses og skrives, er ligesom sektioner med ikke-offentlig viden personlige for hver enkelt proces.

DLL'er med delte vidensafsnit bør derfor ikke komprimeres, hvis de skal bruges samtidig af flere pakker, da hver programinstans skal have sin kopi af DLL'en med sig, hvilket fører til et øget hukommelsesforbrug. Dette begreb om at øge arbejdssystemet fra et sæt dynamisk indlæste biblioteker er en kerneidé i Windows, som stadig er gældende siden 2015. DLL'er præsenterer de sædvanlige fordele ved delte biblioteker, som f.eks. modularitet.