DLL hell is a common term for various problems associated with the use of dynamic link libraries (DLLs) or DLL files. A DLL file is a resource within the Windows operating system that contains code and data related to the functionality of one or more applications. These files, which may have the file extension .dll or other file extensions, have been a major building block for the Windows operating system and Windows programs since the early MS-DOS versions of Microsoft’s computer technology. Successive versions of Windows have illustrated certain problems with the use of DLL files for many different programs.
Many of the problems that lead developers to use the term "DLL hell" involve instances when an alteration to a DLL file by a program negatively affects the function of other programs that need to use the same DLL file. Problems with registries, incompatibility and the incorrect updating of DLL files are all part of the general challenge of ordering the use of DLL files across many different applications.
In more current versions of Windows, some of the problems that contribute to DLL hell have been addressed and solved to some extent. Changes include a .NET framework, which uses metadata to describe program components. This system helps with versioning and deployment to alleviate some of the problems that arise due to cross-language DLL use or situations where applications have to share a DLL file. A Windows File Protection system, introduced in Windows 2000, stops some programs from changing system DLL files. Other solutions involve placing an application's DLL file into a separate folder rather than storing it in a shared location so that each application can have its own unique version of the DLL file.