DLL-helvede (DLL-mareridt, bogstaveligt: DLL -helvede) er et dødvande forbundet med håndteringen af dynamiske DLL'er i Microsoft Windows -operativsystemet .
Et lignende problem i andre operativsystemer kaldes Dependency hell .
Essensen af problemet ligger i konflikten mellem DLL-versioner designet til at understøtte visse funktioner. DLL helvede er et eksempel på et dårligt programmeringskoncept, der ligesom en skjult mine fører til en kraftig stigning i kompleksiteten og forbedringen af systemet.
Ifølge den oprindelige idé skulle DLL'er være kompatible fra version til version og udskiftelige i begge retninger.
Implementeringen af DLL-mekanismen er sådan, at inkompatibilitet og ikke-udskiftelighed bliver reglen snarere end undtagelsen, hvilket fører til en masse problemer.
For at undgå konflikter er det almindeligt at bruge mange overflødige kopier af DLL'en til hver applikation, hvilket besejrer den oprindelige idé om at udnytte DLL'er som standardmoduler, der gemmes én gang i hukommelsen og deles af mange opgaver. Med en sådan erfaring øges antallet af forskellige DLL'er, der har samme navn og udfører de samme funktioner, efter at have rettet fejl i en DLL eller gendannelse af et system fra et arkiv, og automatisk versionsopgradering eller fejlkorrektion bliver umulig.
Dette problem opstod i tidlige versioner af Microsoft Windows .
Tidlige versioner af Mac OS X stod over for lignende problemer , men ved at bruge forskellige teknologier.
Problemet opstår igen, når programmet forsøges at køre med en anden DLL, hvorfra det blev testet, hvilket viser den oprindelige fejl i det generelle koncept, der tillader vilkårlig udskiftning af modulversioner.
Disse foranstaltninger anbefales at tages samtidigt for de bedste resultater:
I 2001 definerede Microsoft .NET Framework- undersystemet til udvikling af pakker ( samlinger : se her ). Dette undersystem begyndte at understøtte et fælles runtime-bibliotek ved at vedhæfte en DLL til den primære eksekverbare klasse.