A DLL-pokol (DLL-rémálom, szó szerint: DLL -pokol) egy holtpont, amely a dinamikus DLL -ek kezeléséhez kapcsolódik a Microsoft Windows operációs rendszerben .
Egy hasonló probléma más operációs rendszerekben az úgynevezett Dependency hell .
A probléma lényege a bizonyos funkciók támogatására tervezett DLL-verziók ütközésében rejlik. A DLL pokol példája egy rossz programozási koncepciónak, amely, mint egy rejtett bánya, a rendszer összetettségének és fejlesztésének meredek növekedéséhez vezet.
Az eredeti elképzelés szerint a DLL-eknek verzióról verzióra kompatibilisnek és mindkét irányban cserélhetőnek kell lenniük.
A DLL-mechanizmus megvalósítása olyan, hogy az inkompatibilitás és a felcserélhetőség hiánya inkább szabály, mint kivétel, ami sok problémához vezet.
Az ütközések elkerülése érdekében gyakori, hogy minden alkalmazáshoz sok redundáns DLL-példányt használnak, ami megcáfolja azt az eredeti elképzelést, hogy a DLL-eket szabványos modulokként használják ki, amelyeket egyszer tárolnak a memóriában, és sok feladat megosztja. Ezen túlmenően ilyen tapasztalattal a DLL-ben lévő hibák kijavítása vagy a rendszer archívumból történő visszaállítása után megnő az azonos nevű és ugyanazokat a funkciókat ellátó DLL-ek száma, és lehetetlenné válik a verzió automatikus frissítése vagy a hibák javítása.
Ez a probléma a Microsoft Windows korai verzióiban fordult elő .
A Mac OS X korai verziói hasonló problémákkal küzdöttek , de eltérő technológiát használtak.
A probléma akkor jelentkezik, amikor a programot egy másik DLL-lel próbálják futtatni, amelyből tesztelték, ami az általános koncepció eredeti hibáját mutatja, amely lehetővé teszi a modulverziók tetszőleges cseréjét.
A legjobb eredmény érdekében ezeket az intézkedéseket javasolt egyidejűleg megtenni:
2001-ben a Microsoft definiálta a .NET-keretrendszer alrendszerét a csomagok fejlesztésére ( összeállítások : lásd itt ). Ez az alrendszer támogatni kezdett egy közös futásidejű könyvtárat azáltal, hogy egy DLL-t csatolt a fő végrehajtható osztályhoz.