Welcome Guest. | Log In| Register | Membership Benefits

News

December 13, 1999

Printer ready
Printer ready
A Brief History Of DLL Hell

By Andrew Binstock

Before the days of objects, a PC program would simply load into memory as one chunk of code, and then execute--simple and confusion-free. Now, however, component objects are collected into dynamic link libraries that might, for example, contain code for displaying a menu, handling a scrollbar, or any number of other discrete tasks. Windows itself, including Windows 95/98 and Windows NT, is made up of various programs that call DLLs into action as necessary.

From the beginning, this model created a nettlesome management issue: conflicting DLLs. Most applications relied on a combination of DLLs written specifically for the application itself and those provided with Windows. The problem was that Windows DLLs were notoriously buggy, and vendors often replaced them with their own versions. As each vendor would overlay prior versions of DLLs with its own, the operating system would change, causing other applications suddenly not to run properly. Moreover, if two applications installed DLLs that went by the same name--whether they were Windows DLLs or not--the newer DLL could overwrite the older one, disabling the first application.

This nightmare, known informally as "DLL hell," continues today--with the exception that most applications no longer overwrite Windows DLLs. Regardless, management of this problem remains a serious challenge in the enterprise.

Microsoft's upcoming Windows 2000 combines a number of technologies to address this issue. The first is that applications no longer will be able to overwrite system files and DLLs permanently. Windows 2000 protects its own DLLs by reinstalling them immediately if they are deleted.

A second feature is a design called side-by-side components. "Using this technology, if programs need their own version of a DLL, they can install the DLL in the application's local directory and know it will be found,'' says Kyle Marsh, a Microsoft software design engineer. "Any other version of the DLL, or other DLLs with the same name, will be ignored." Likewise, programs can run separate instances of the same DLL without having to worry about conflicts. Some of this technology is available in Windows 98, Second Edition.

return to main story, "The Distributed Object Challenge"


Back to This Week's Issue
Send Us Your Feedback
Top of the Page