DLL-hell (original) (raw)

DLL-hell is a colorful term given to any problem based on a difficulty in managing Dynamic Link Libraries (DLLs) installed on a particular copy of an operating system. This includes conflicts between various versions of these libraries, difficulty in obtaining a large number of such libraries, and/or having many unnecessary copies of different versions (which can cause both disk space and performance problems).

Generally, the concept of DLLs means that many applications can share the same DLL file. However, in many cases, applications may introduce a changed version of a particular DLL which is already present on a system, either overwriting the old copy (which can, in turn, break compatibility with other applications), or install another copy, wasting disk space, memory space and slowing program load times because it takes more time to locate the right DLL among many.

As time goes by, the DLL-hell problem can become only worse, since software that installed the unnecessary DLLs is unlikely to remove them when uninstalled. This could eventually cause a chaos of thousands of mysterious DLL-files, some of which are necessary for the system to function normally, while others are just wasting space, and with no way to distinguish between them.

DLL-hell as described above is a very common phenomenon on Microsoft Windows systems, as they have limited facilities for system file management and versioning of libraries (and existing programs often disrespect the few facilities that do exist). Other systems, while not immune to the problem, are not known for the widespread occurrence of DLL-hell seen with Microsoft Windows.

There are several measures known to avoid DLL-hell, which have to be used simultaneously, for optimal results:

DLL Hell: The Inside Story