DLL Hell : The conflicting DLL files

RSS Author RSS     Views:N/A
Bookmark and Share          Republish
DLL or Dynamic Link Library is primarily a package of files used to run any Windows-based program designed using Microsoft Visual Studio. DLL files, unlike .EXE files do not require any point to start and can be called using function-calls through RunDLL.EXE or RunDLL32.EXE. In any software development service , using Microsoft Visual Studio, DLL files are used for program development and also by the Windows Operating System.

"DLL Hell" is a common terminology used in the programming fraternity which means the deadlock arising due to conflicting or missing DLL files in the system.

The reasons behind DLL Hell are various. These are mainly as follows:


  • Insufficient memory allocation in 16 or higher bit versions of Windows.
  • Inappropriate installation package management where new DLL files overwrite old ones causing any previously installed program to malfunction.
  • Development fault - not using proper backward-compatibility function modules
  • Enforcing standard naming, versioning and file management for DLLs


The solutions suggested by most of the software development companies are as follows:

Static links - A simple solution to reduce DLL Hell is to link all libraries statically. This is done at the programming phase where DLL files are statically linked against the same libraries eliminating the version checking scenario for the DLL files used.

Eliminate conflicting DLL situation - This solution suggests placing all versions of the conflicting DLL file both in the memory and on-disk. The "Side-by-side Component Sharing" concept of Windows XP loads separate copies of DLLs for each application enabling the system to run different versions of the same DLL simultaneously.

Using .NET framework - Introduction of COM (Component Object Model) in custom software development and the use .NET framework in Windows environment has considerably reduced DLL Hell. The reusable components which support strong binding share Global Assembly Cache. The Cache can serve as repository for all .NET components and any component running at a given time share resources from this repository. This will surely reduce the DLL Hell to a great extent, although, may not completely eradicate it.


Report this article


Bookmark and Share
Republish



Ask a Question about this Article