Hoe DLL-fouten te herstellen

Zodra een systeemfoutvenster voor je opduikt en melding maakt van een ontbrekende DLL, rijst onmiddellijk de vraag: wat is een DLL-bestand? Waarom zijn ze nodig?

DLL-bestanden zijn dynamische bibliotheken die vaak door applicaties worden aangeroepen wanneer ze worden uitgevoerd,

Personal computers met Windows-systemen krijgen vaak te maken met fouten in DLL-bestanden, waardoor sommige programma's niet kunnen worden uitgevoerd. Er verschijnen foutmeldingen waarin staat dat er een specifiek .DLL-bestand ontbreekt. Het probleem wordt opgelost omdat je dat specifieke bestand op het internet moet vinden om de software te laten werken.

Alles over DLL-bestanden

Vanwege het aantal DLL-bestanden en de manier waarop ze worden gebruikt, zijn DLL-bestanden meestal de oorzaak van een aanzienlijk deel van de fouten die optreden bij het starten, gebruiken en afsluiten van Windows. Het openen van een DLL-bestand is echter relatief zeldzaam, omdat je zo'n bestand eigenlijk nooit zou moeten bewerken, en het bewerken zelf zal waarschijnlijk leiden tot problemen met programma's en andere DLL's.

De code in een DLL wordt gedeeld door alle processen die de DLL gebruiken. Met andere woorden, ze bezetten een enkele locatie in het fysieke geheugen, maar bevinden zich niet in het paginabestandgebied. Positionele unbiased code wordt in Windows niet gebruikt voor DLL's omdat deze wordt verplaatst tijdens het laden om al zijn ingangspuntadressen vast te zetten in vrije ruimte in de voorbereidende geheugencursus om DLL's te laden.

DLL-bestanden in oude varianten van Windows

Oudere versies van Windows, waar elk draaiend proces één groot probleemoplossend gebied bezette, hadden slechts één kopie van de DLL-code nodig voor alle functies om correct te werken.

Stel dat specifieke programma's of combinaties van programma's uit de gedownloade DLL's deze adressen niet vrij hebben. Het zou dan nodig zijn om een extra kopie van de DLL-code te maken, met toepassing van een unieke set verplaatsbare invoercoëfficiënten. Wanneer fysiek geheugen moet worden hersteld, moet een reset worden uitgevoerd in de bezette codesectie en de inhoud daarvan en moet het DLL-bestand snel opnieuw worden geladen. Een soortgelijk architectonisch idee, dat GDI in staat stelde geheel andere apparaatstuurprogramma's te laden, maakte het mogelijk dat Windows andere Windows-pakketten laadde en dat die programma's API's aanriepen uit de gedeelde USER- en GDI-bibliotheken.

Hierdoor kan een DLL-bestand bedrijven op eenzelfde moment meer dan één hulpprogramma bieden. Als een afhankelijke DLL wordt geüpgraded naar een modernere versie, wordt overschreven met een oudere versie, of van de pc wordt verwijderd, werkt dit systeem dat op het DLL-bestand rekent misschien niet meer zoals het zou moeten. ActiveX-besturingselementen, gegevens van het Configuratiescherm en apparaatstuurprogramma's zijn enkele van de informatie van Windows als Dynamic Link Libraries.

Een paar beproefde methoden om DLL-fouten op te lossen:

  • Gebruik Windows Resource Protection Tool of System File Checker (SFC),
  • Download ontbrekende of beschadigde DLL-bestanden en plaats ze in de systeemmap
  • Werk de Microsoft Visual C++ Redistributable bij.
  • Werk het Microsoft .NET Framework bij.
  • Herinstalleer de probleemtoepassing.
  • Vraag een kopie van DLL-bestanden aan bij de fabrikant van de toepassing.

Nog wat meer DLL-bestanden info

Gebonden uitvoerbare bestanden laden iets eerder als ze worden uitgevoerd in dezelfde omgeving waarvoor ze zijn gecompileerd en precies op hetzelfde moment als ze worden uitgevoerd in een andere omgeving, dus er is geen nadeel voor het binden van de import. Trouwens, alle gebruikelijke Windows-doeleinden zijn gekoppeld aan DLL's van hun respectieve Windows-lancering.

Een uitstekend alternatief om de import van een applicatie aan zijn doelomgeving te binden is tijdens de installatie van het hulpprogramma. Het verandert echter wel de checksum van het uitvoerbare bestand, dus het is niet iets dat kan worden bereikt met ondertekende programma's of pakketten die worden beheerd door een configuratiebeheersoftware die checksums gebruikt om versies in het bestand te verwerken. Naarmate recentere Windows-varianten zijn afgestapt van het hebben van gemonteerde adressen voor elke geladen bibliotheek, nemen de mogelijkheid en de waarde van het binden van een uitvoerbaar bestand af.

Terwijl de meeste Dynamic Link Libraries eindigen in de bestandsextensie .DLL, kunnen anderen .OCX, .CPL, of .DRV gebruiken. Als bepaalde uitvoerbare packers een DLL comprimeren (b.v. UPX), worden al zijn code secties gemarkeerd als lees-en-schrijf en kunnen ze niet gedeeld worden. Lees-en-schrijfcodesecties zijn, net als niet-openbare kennissecties, persoonlijk voor elk proces.

DLL's met gedeelde kennissecties mogen dus niet worden gecomprimeerd als ze bedoeld zijn om gelijktijdig door meerdere pakketten te worden gebruikt, aangezien elke programma-instantie zijn kopie van de DLL zou moeten meenemen, wat zou leiden tot een verhoogd geheugenverbruik. Dit idee om het werksysteem uit een reeks dynamisch geladen bibliotheken te laten groeien, is een kernidee van Windows dat sinds 2015 nog steeds bestaat. DLL's bieden de gebruikelijke voordelen van gedeelde bibliotheken, zoals modulariteit.