DLL-virheiden korjaaminen

Heti, kun eteenne ilmestyy järjestelmän virheikkuna, jossa mainitaan puuttuva DLL-tiedosto, herää välittömästi kysymys: mikä on DLL-tiedosto? Miksi niitä tarvitaan?

DLL-tiedostot ovat dynaamisia kirjastoja, joita sovellukset usein kutsuvat suorittaessaan. DLL-tiedostot ovat olennainen osa koodin hienovaraisuuden vähentämistä ja yleisen suorituskyvyn parantamista.

Henkilökohtaisissa tietokoneissa, joissa käytetään Windows-järjestelmiä, esiintyy usein DLL-tiedostovirheitä, joiden vuoksi joitakin ohjelmia ei voida suorittaa. Näyttöön tulee virheilmoituksia, joissa todetaan, että tietty .DLL-tiedosto puuttuu. Ongelma on ratkaistu, koska sinun on löydettävä kyseinen tiedosto Internetistä, jotta ohjelma voi alkaa toimia.

Kaikki DLL-tiedostoista

Koska DLL-tiedostoja on paljon ja koska niitä käytetään, suuri osa Windowsin käynnistämisen, käytön ja sammuttamisen yhteydessä havaituista virheistä johtuu yleensä DLL-tiedostoista. DLL-tiedoston avaaminen on kuitenkin suhteellisen harvinaista, koska tällaista tiedostoa ei pitäisi koskaan varsinaisesti muokata, ja muokkaaminen itsessään johtaa todennäköisesti ongelmiin ohjelmien ja muiden DLL-tiedostojen kanssa.

DLL-tiedoston koodi on kaikkien DLL-tiedostoa käyttävien prosessien yhteistä. Toisin sanoen ne vievät yhden paikan fyysisessä muistissa, mutta eivät ole sivutiedostoalueella. Windowsissa ei käytetä DLL-tiedostojen sijaintikoodia, koska sitä siirretään ladattaessa, jotta kaikki sen alkupisteen osoitteet voidaan kiinnittää vapaaseen tilaan valmistelevassa muistissa, jossa DLL-tiedostot ladataan.

DLL-tiedostot Windowsin vanhoissa versioissa

Vanhemmissa Windows-versioissa, joissa jokainen käynnissä oleva prosessi miehitti yhden ainoan laajan ongelmanratkaisualueen, tarvittiin vain yksi kopio DLL-koodista, jotta kaikki toiminnot toimisivat oikein.

Oletetaan, että ladattujen DLL-tiedostojen tietyillä ohjelmilla tai ohjelmayhdistelmillä ei ole näitä osoitteita vapaana. Tällöin olisi tarpeen tehdä ylimääräinen kopio DLL-koodista ja soveltaa ainutlaatuista joukkoa siirrettäviä syöttökertoimia. Kun fyysinen muisti on palautettava, on tehtävä nollaus varattuun koodiosioon ja sen sisältöön sekä nopea uudelleenlataus DLL-tiedostosta. Samankaltainen arkkitehtuuri-idea, joka salli GDI:n ladata täysin erilaisia laiteajureita, mahdollisti sen, että Windows voi ladata muita Windows-paketteja ja että nämä ohjelmat voivat kutsua API:ita jaetuista USER- ja GDI-kirjastoista.

Tämän vuoksi DLL-tiedosto voi tarjota yrityksille useampia apuohjelmia samaan aikaan. Jos riippuvainen DLL päivitetään nykyaikaisempaan versioon, korvataan vanhemmalla versiolla tai poistetaan tietokoneesta, tämä DLL-tiedostoon luottava järjestelmä ei ehkä toimi, koska sen pitäisi. ActiveX-ohjaimet, ohjauspaneelin recordsdata ja laiteajurit ovat joitakin Windows'n tietoja dynaamisina linkkikirjastoina.

Muutamia todistettuja menetelmiä DLL-virheiden korjaamiseen:

  • Käytä Windowsin resurssisuojaustyökalua tai SFC:tä (System File Checker).
  • Lataa puuttuvat tai vioittuneet DLL-tiedostot ja siirrä ne järjestelmäkansioon
  • Päivitä Microsoft Visual C++ Redistributable.
  • Päivitä Microsoft .NET Framework.
  • Asenna ongelmasovellus uudelleen.
  • Pyydä kopio DLL-tiedostoista sovelluksen valmistajalta.

Lisää tietoa DLL-tiedostoista

Sidotut suoritettavat tiedostot latautuvat hieman nopeammin, jos ne ajetaan samassa ympäristössä, johon ne on käännetty, ja täsmälleen samaan aikaan, jos ne ajetaan eri ympäristössä, joten tuonnin sitomisesta ei ole mitään haittaa. Muuten, kaikki tavanomaiset Windows-tarkoitukset on liitetty DLL-järjestelmään niiden Windows-käynnistyksen yhteydessä.

Erinomainen vaihtoehto sitoa sovelluksen tuodut tiedostot sen kohdeympäristöön on apuohjelman asennuksen aikana. Se kuitenkin muuttaa suoritettavan ohjelman tarkistussummaa, joten sitä ei voi tehdä allekirjoitetuilla ohjelmilla tai paketeilla, joita hallinnoi konfiguraationhallintaohjelmisto, joka käyttää tarkistussummia tiedostojen versioiden käsittelyyn. Koska uudemmissa Windows-muunnoksissa on siirrytty pois siitä, että jokaisella ladatulla kirjastolla ei ole enää asennettua osoitetta, suoritettavan ohjelman sitomisen mahdollisuus ja arvo ovat vähenemässä.

Useimmat dynaamiset linkkikirjastot päättyvät tiedostopäätteeseen .DLL, mutta toiset saattavat käyttää tiedostopäätteitä .OCX, .CPL tai .DRV. Jos tietyt suoritettavan tiedoston pakkaajat pakkaavat DLL:n (esim. UPX), kaikki sen koodiosiot merkitään luettaviksi ja kirjoitettaviksi ja ne saattavat olla jakamattomia. Luku- ja kirjoitusosuudet, aivan kuten ei-julkiset tieto-osuudet, ovat jokaisen prosessin henkilökohtaisia.

Näin ollen DLL-ohjelmia, joissa on jaettuja tieto-osioita, ei pitäisi pakata, jos niitä on tarkoitus käyttää samanaikaisesti useissa paketeissa, koska jokaisen ohjelmapartikkelin olisi kannettava mukanaan oma kopionsa DLL:stä, mikä johtaisi muistin kulutuksen kasvuun. Tämä ajatus työjärjestelmän kasvattamisesta dynaamisesti ladattavien kirjastojen joukosta on Windowsin ydinajatus, joka on säilynyt vuodesta 2015 lähtien. DLL:t tarjoavat jaettujen kirjastojen tavanomaiset edut, kuten modulaarisuuden.