DLL Hell refers to the set of problems caused when multiple applications attempt to share a common component like a dynamic link library (DLL) or a Component Object Model (COM) class. In the most typical case, one application will install a new version of the shared component that is not backward compatible with the version already on the machine. Although the application that has just been installed works well, existing applications that depended on a previous version of the shared component might no longer work.
DLL Hell is where loading one program breaks another program. Basically, any time an application replaces or loads an executable used by another application, there is a risk. It doesn't matter if the executable is an exe, vxd, dll, or something else, the risk is the same, and the user has no control over what is happening.
To make matters worse, when clients install software that you've written, your software might break other, un-related, applications on the client’s machine. This is particularly true if you've used a Microsoft compiler. (Mfc42.dll is known to cause this type of problem.)
When loading or exiting one application causes another application to throw up an error, we may have a compatibility issue. Microsoft has promised to fix this issue, but until then we need to figure out which application is more important. The application we need should be re-installed after uninstalling the application we don't need. Or try to get the latest version or updated version of each application. This dll hell issue is not easy to resolve, and may take time. This is why it may be easier to just remove one application.
Solution to DLL Hell
.NET Framework 1.1 introduced something called side-by-side execution. Side by side is the ability to install and run multiple versions of the same component on the machine concurrently at the same time without interfering with each other. With components that support side-by-side, authors aren't necessarily tied to maintaining strict backward compatibility because different applications are free to use different versions of a shared component.