Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I keep hearing about DLL hell - what is this? [closed]

Tags:

dll

I keep hearing about DLL hell - what is this all about?

like image 768
MarcoPolo Avatar asked Sep 04 '09 13:09

MarcoPolo


People also ask

How do I fix the DLL Hell problem?

A simple solution to DLL Hell in an application is to statically link all the libraries, i.e. to include the library version required in the program, instead of picking up a system library with a specified name. This is common in C/C++ applications, where, instead of having to worry about which version of MFC42.

What is DLL Hell problem in C sharp?

Dll Hell refers to a set of problems caused when multiple applications attempt to share a common component like a dynamic link library (DLL). The reason for this issue was that the version information about the different components of an application was not recorded by the system.

What do you mean by end to DLL Hell concept?

So, DLL HELL is the problem where one application will install a newer version of a shared component that is not backward compatible with the version already on the machine, causing other existing applications that rely on the shared component to break. With .

What are DLL conflicts?

DLL Conflict issue between different versions of the same dependent assembly.


2 Answers

It's when Application A installs a Shared DLL v1.0, Application B comes and updates the Shared DLL to v1.1 which should be compatible but there are slightly different behaviors, then App A stops working correctly and reinstalls v1.0 then App B stops working ... now imagine this with more than 2 apps let's say a dozen: DLL Hell.

like image 62
Pop Catalin Avatar answered Oct 10 '22 02:10

Pop Catalin


DLL hell was mostly from the COM days, where a COM dll had to be registered, and clients of it would look it up in the registry. It was a nightmare because the filesystem (*.dll, *.ocx) could be modified leaving obsolete entries in the registry. Apps would stop working, it was horrible.

You'd then get the scenario where a new app installs and registers a new version of the DLL, thus breaking apps that really wanted the old version. You'd reinstall the old app, and break the new one in the process.

With .NET, there's no need to register the DLLs (the GAC is a special case, and has provision to avoid the versioning issue described above), the loader just picks up assemblies by looking in the correct paths.

like image 44
Neil Barnwell Avatar answered Oct 10 '22 00:10

Neil Barnwell