4 ms·
DLL hell happened (in Windows) because you had to dynamically link against system libraries which could change in incompatible ways making your code fragile. D
by podperson 14y ago
DLL hell happened (in Windows) because you had to dynamically link against system libraries which could change in incompatible ways making your code fragile.
Depending on the nature of the development toolset, you may not be able to avoid DLL hell. E.g. you may not have the right to build the library into your code and/or the toolset may force you to link against external code libraries.
The original goal of Microsoft's DLL strategy was to save disk space (and presumably memory) but the end result was a compatibility nightmare. Retrospectively, it seems to have been both a bad technical decision (disk space turned out to be a bad thing to trade against other considerations) and badly implemented (too many DLLs went live and then broke backwards compatibility in updates). It seems like other companies managed to allow dynamic linking without creating so much fragility.
- gouranga 14y agoIt's a great idea and still is. Linux does pretty much the same thing. It actually broke because they didn't allow multiple versions and windows linked to the latest version at runtime. They fixed all this with WinSXS which allows a PE file to specify a manifest i.e. a list of required versions of DLLs to load. This is all neatly explained here: http://msdn.microsoft.com/en-us/library/aa376307.aspx http://msdn.microsoft.com/en-us/library/aa376307.aspx
- tedunangst 14y agoIt would be more accurate to say dll hell happened because vendors decided to install their 3rd party dependencies in the windows directory. There are not as many problems with actual Microsoft dlls.