Pokúšate sa spustiť nejakú hru alebo klasický program a namiesto štartu sa len zobrazí čudesná správa o tom, že chýba nejaký GuruX32.DLL, alebo iný krkolomne pomenovaný súbor? Čo to znamená? Kde takéto DLL súbory vlastne hľadať a ako ich správne do počítača dostať?

Ak na svojom počítači používate operačný systém Windows, tak súbory s príponou DLL celkom určite poznáte. Nájdete ich v hojnom počte nielen v systémových priečinkoch, ale obvykle aj v inštalačných priečinkoch programov, ktoré ste si nainštalovali.

Možno síce neviete, na čo presne slúžia, ale máte akú takú predstavu, že sú dôležité a systém a jednotlivé aplikácie ich k svojej práci vyžadujú.

Ide o dynamicky pripájané knižnice (v angličtine, Dynamic-Link Library, skrátene DLL), ktoré podobne ako spustiteľné EXE súbory môžu obsahovať programový kód, dáta a takisto zdroje, potrebné pre beh konkrétneho programu.

V prípade, že dôležitá knižnica chýba, daná aplikácia sa vôbec nemusí spustiť, pričom namiesto jej otvorenia sa len zobrazí systémová chybová správa o tom, že sa konkrétnu DLL knižnicu nepodarilo nájsť.

Alternatívou je, ak sa podobné okno objaví po štarte Windows, čo je často dôsledok chýbajúcej knižnice programu spúšťaného automaticky na pozadí.

Väčšina používateľov si v takejto situácii nevie príliš rady a netuší, kde vlastne konkrétne DLL knižnice hľadať a ako ich do počítača dostať. Nie je sa ale čoho obávať. Obvykle východisko z takejto situácie nie je vôbec komplikované. Len treba vedieť, ako to robiť a ako to naopak nerobiť.

Dôležité upozornenie: Ak sa dostanete do situácie, že vám niečo nefunguje z dôvodu chýbajúceho DLL súboru, zapamätajte si, že je EXTRÉMNE NEBEZPEČNÉ, pokúšať sa daný súbor samostatne stiahnuť z internetu (napr. hľadaním formou: d3dx.dll download).

Vo veľkom množstve prípadov sa dostanete na stránky obsahujúce škodlivé súbory s rovnakými názvami, prostredníctvom ktorých si infikujete počítač. Pri chýbajúcom DLL súbore sa preto riaďte vždy týmito troma jednoduchými otázkami, na ktoré si sami odpoviete.

Otázka č. 1: ako sa program, ktorý nejde spustiť, na môj počítač dostal?

Dôvody, prečo programu niektoré konkrétne knižnice chýbajú, môžu byť rôzne. Prvou vecou ktorou by ste sa mali vždy zaoberať je to, akým spôsobom sa nefungujúci program na váš počítač dostal.

Ide o prípad, že ste kompletne preinštalovali systém Windows a pokúšate sa spustiť z disku program, ktorý bol nainštalovaný na tom pôvodnom? Ak je tomu tak a program nefunguje, bude ho nutné preinštalovať, aby si mohol vytvoriť v čerstvo nainštalovanom systéme nové záznamy o svojej existencii.

Spúšťate aplikáciu z USB kľúča, alebo z externého disku, pričom ste si ju len skopírovali z iného počítača? Ak áno, je pomerne normálne, že nefunguje a o svojich knižniciach nevie. Nie každá aplikácia má schopnosť fungovať v prenosnej podobe (portable), bez nutnosti opätovnej inštalácie.

V oboch týchto prípadoch je teda chybová správa o chýbajúcom DLL dôsledkom nesprávneho prevádzkovania programu a riešením je daný program znova/správne nainštalovať.

Otázka č. 2: z akého balíka daná DLL knižnica pochádza?

Pokiaľ sa zobrazí informácia o chýbajúcom DLL na čerstvo nainštalovanej aplikácii alebo hre, je takmer isté, že daný softvér vyžaduje pre svoju prevádzku konkrétny balík knižníc, ktorý je veľmi rozšírený a inštalovaný samostatne.

Správnym postupom je v takomto prípade to, že začnete zisťovať, čoho je daná chýbajúca knižnica súčasťou. V pátraní vám pomôže internetový vyhľadávač, s pomocou ktorého sa informáciou obvykle veľmi rýchlo dozviete prostým zadaním názvu knižnice do vyhľadávania a kliknutím na jeden z prvých odkazov.

Vyhýbajte sa ale hľadaniam typu „VCRUNTIME140.DLL download“ a namiesto toho radšej spolu s názvom DLL súboru vyhľadávajte anglickú frázu „part of“ (je súčasťou).

Obvykle sa dozviete, že chýbajúca knižnica je súčasťou jedného z týchto troch balíkov. Microsoft .NET Framework (existuje v niekoľkých číselných verziách), Microsoft Visual C++ Redistributable (niekoľko variant reprezentovaných rokmi) a v prípade hier hlavne o Microsoft DirectX. Tieto balíky sa obvykle do systému inštalujú spoločne s programami, ktoré ich potrebujú, avšak nie vždy všetko prebehne hladko a konkrétne balíky je nutné doinštalovať ručne podľa toho, ktorý potrebujete.

Keďže rôzne verzie týchto balíkov obsahujú rôzne súbory, v niektorých prípadoch je nutné mať na systéme niekoľko verzií daných balíkov zároveň, čo môže byť pre niektorých používateľov mätúce. Je ale úplne v poriadku, že máte na počítači nainštalovaný balík  Microsoft .NET Framework 3.5 a NET Framework 4.7, pretože rôzne programy môžu vyžadovať rôzne verzie.

Ako náhle sa dozviete, že vám chýba DLL knižnica, ktorá je súčasťou niektorého z týchto balíkov, skrátka si daný balík stiahnite a nainštalujte. Knižnica sa do systému doplní.

Práve z tohto dôvodu je obvykle nevhodné, aby ste sa pokúšali chýbajúcu knižnicu stiahnuť samostatne. Obvykle totiž nechýba len jedna, ale celý balík knižníc a dotyčná je to len prvá, ktorá sa pri štarte programu hľadá, takže práve nej sa chybová správa týka.

Všetky tieto balíky, či už pre C++/Visual studio, .NET Framework alebo DirectX vydáva Microsoft. Sú celkom zdarma a sú dostupné na oficiálnej stránke Microsoftu. Odnikiaľ inakadiaľ ich nesťahujte. V mnohých prípadoch vám Windows 10 ponúkne aj ich automatické stiahnutie pri procese inštalácie nejakého programu, v prípade že zistí, že ho daná aplikácia potrebuje. Nie je to ale samozrejmosť a inštalátor ho na to musí upozorniť.

Otázka č. 3: je daná knižnica systémová a patrí samotnému Windows?

Ak pri vyhľadávaní názvu chýbajúceho DLL súboru zistíte, že je súčasťou samotného Windows (zoznam DLL knižníc Windows 10, Windows 8Windows 7, použite abecedný filtrovač), takisto sa ho nepokúšajte sťahovať samostatne z internetu.

V základe vám nič nebráni v tom, aby ste súbor systémovej knižnice rýchlo a bezstarostne preniesli z inej inštalácie Windows rovnakého typu a umiestnili ho na rovnakú pozíciu v rámci toho svojho. Riešenie by bez problémov fungovalo.

Avšak to, že z vášho systému súbor zmizol, alebo je poškodený a nefunkčný, nie je len tak pre nič za nič. Obvykle to značí, že je váš systém poškodený na úrovni súborov a teda aj knižníc a je ho potrebné opraviť. Pravdepodobne je poškodené viac ako jedna DLL knižnica a takisto iné systémové súbory. Typickým prejavom pri takejto situácii je, že v rámci Windows prestanú fungovať niektoré jeho súčasti a chybová správa o chýbajúcej DLL knižnici sa zobrazí pri spustení programu, ktorý ešte včera normálne fungoval.

Pri poškodenom systéme na úrovni súborov je vhodné použiť tri kroky. Prvým je vždy kontrola súborového systému partície C. Tú vykonáte tak, že otvoríte Windows PowerShell ako správca (napr. kliknutím pravého tlačidla myši na menu Štart) a zadáte do neho príkaz:

chkdsk C: /f.

Keďže si tým vyžiadate kontrolu systémovej partície, na ktorej je Windows, kontrola „za behu“ nebude možná a program vás upozorní, že môže kontrolu naplánovať pri najbližšom reštarte (Chkdsk cannot run because the volume is in use by another process. Would you like to schedule this volume to be checked the next time the system restarts?).

To potvrďte stlačením písmena Y, ktoré symbolizuje odpoveď áno (Yes). Počítač nemusíte reštartovať hneď, avšak najbližšie keď to urobíte, kontrola sa spustí pred nábehom operačného systému.

Po skončení tejto kontroly vyskúšajte, či sa situácia s nefunkčným systémovým DLL súborom opravila. Ak nie, pokračujte kontrolou konzistentnosti systémových súborov. To vykonáte rovnako v príkazovom riadku, konkrétne zadaním príkazu:

SFC /scannow

Po stlačení Enteru sa proces začne, pričom obvykle trvá niekoľko minút.

Po dokončení a prípadnej oprave vyskúšajte, či bol váš problém odstránený. Ak problém nebol odstránený ani týmto postupom, spustite v príkazovom riadku kontrolu zostavenia systému pomocou DISM. Do príkazového riadku napíšte príkaz:

DISM /Online /Cleanup-Image /ScanHealth

Ten odhalí prípadné chyby a ich detaily, pričom následne môžete spustiť ich opravu príkazom:

Dism /Online /Cleanup-Image /RestoreHealth

V tomto procese sa kontaktujú aktualizačné servery Microsoftu a originálne systémové knižnice sa cez ne na pozadí sami stiahnu. Po tomto kroku by mali byť všetky prípadné poškodenia systémových súborov opravené a systém by mal byť plne funkčný. V prípade akýchkoľvek nezrovnalostí postupujte podľa detailnejšieho článku: Opravujeme dátové poškodenie Windows.

Prečo nie je vhodné konkrétne DLL sťahovať z hocakých webových stránok?

Pri akýchkoľvek problémov s nedostupnými alebo chýbajúcimi knižnicami väčšinu používateľov okamžite napadne to, že najjednoduchšie je zadať názov daného DLL do vyhľadávača Googlu, pridať k nemu výraz „download“ a následne si potrebný súbor stiahnuť.

Pri zadaní názvu knižnice do vyhľadávača narazíte na množstvo webových stránok, ktoré takmer nekonečný zástup knižníc ponúkajú a umožňujú ich (po jednej) stiahnuť zdarma.

Hlavným problémom pri takýchto postupoch je, že si nikdy nemôžete byť istý tým, že je knižnica skutočne originálna a neupravená. Pamätajte na to, že dané stránky obvykle knižnice poskytujú neoprávnene a teda nezákonne.

Ide totiž o súčasti operačných systémov či programov, ktoré podliehajú autorským právam. Z tohto dôvodu si preto nemôžete byť automaticky istý tým, že daná stránka nemá nekalé postranné úmysly.

Typickým prejavom je, že sa na nej nachádzajú podvodné download tlačidlá, súbory môžu byť infikované, alebo sa vás stránka pokúša okradnúť formou inštalácie nejakého pofidérneho softvéru za 15 euro, určeného na sťahovanie DLL knižníc.

Nezabudnite takisto na to, že knižnice sú často súčasťou väčších balíkov a len málokedy naozaj chýba len jedna konkrétna a zvyšok nie.

Ak sa aj napriek tomu rozhodnete stiahnuť konkrétny súbor, vždy si overte, že nie je infikovaný testovaním na niekoľkých desiatkach rôznych antivírusov (urobiť to môžete zdarma uploadovaním súboru do služby VirusTotal alebo Jotti Scan). Ak je aj daný súbor v poriadku, radšej ho neumiestňujte do systémového priečinku Windows. V takomto prípade by k nemu mali prístup všetky programy. Obvykle stačí, ak k nemu bude mať  prístup len aplikácia, ktorá si ho pôvodne vyžiadala.

Programy hľadajú potrebné knižnice nielen v systémových priečinkoch, ale aj v tých vlastných. Pre použitie chýbajúcej knižnice preto stačí, aby ste ju umiestnili do toho istého priečinka, kde sa nachádza spúšťací EXE súbor daného programu. Ak vedľa neho knižnica so správnym názvom bude, program si ju nájde a použije.

Značky:

František Urban

František Urban
Zameriavam sa najmä na prehľadové a analytické články z oblasti najrôznejších technológií a ich vývoja. Nájdete ma takisto pri diagnostike HW a SW problémov.