Windows下的DLL陷阱 微软正在积极努力解决事关Windows稳定性的致命伤棗“DLL陷阱”。该问题从Windows 3.1起就一直困扰着微软和用户。微软在每一个Windows版本(包括最新的Windows 2000和Windows Me)中都为解决这个问题做了新的调整，不过据介绍2001年发布的Windows XP将会最终解决这一问题。上面所说的调整与解决之道都是由在微软内部被称做“Fusion(融解)”的技术来完成的。虽然这项技术从Windows 98就已经开始应用，但相信大多数人还没有听说过这个新东东。
什么是DLL陷阱
“DLL陷阱”是目前影响Windows系统稳定的一号杀手，凡是使用Windows系统的用户都会有这样的感受:Windows自安装后，经过一段时间的使用以及不断地安装各样各样的应用程序，整个系统一般都会变得越来越脆弱。这主要是由于当初微软的设计理念——DLL共享数据库以及其他一些共享资源所造成的。在Windows设计之初，微软的设计者们面临着让拥有较少系统资源的电脑能够实现多任务和图形界面操作的难题，内存和磁盘空间都非常宝贵。设计者们必需解决的最基本一条就是要尽可能地将有限的资源进行共享，这样可以避免应用程序把相同的内容重复调入内存，从而达到节省内存的目的。同样，相同的内容也可以储存在磁盘的相同位置用来节省磁盘空间。在当时这确实是一个非常精妙的好主意，不过随着Windows系统越做越复杂，电脑硬件性能越来越强大，价格却越来越低，对于用户而言大容量的内存和硬盘已经是唾手可得，此时共享DLL文件的意义似乎已经慢慢地变小。而且更为重要的是：这些在以前曾经帮助过用户的技术开始越来越显露其不利的一面，因为它们已经逐渐成为系统发生问题的最主要根源之一。

你掉入这个陷阱了吗？
我们可以这样认为，所有正在读这篇文章的朋友其实都已经落入了“DLL陷阱”，不过你可能并没注意到这一点，比如:当你安装了若干个应用程序后，它们有时会将系统最重要的DLL文件Comctrl32.dll替换成了自己的版本。所以现在你的电脑中的这个文件可能已经是最新版本，或者至少和当初安装系统时的不一样。这样的后果是也许有一天你的某个应用程序拒绝再为你服务。当然有时还会更糟，因为Windows也非常需要这个DLL文件，如果替换后的文件与Windows不配套，那么会出现什么想来你一定会很清楚了?!可是这样的替换、覆盖就在我们平时不断地安装应用程序时默默地在暗地里发生着。
如何防止“DLL陷阱”
微软其实也早就注意到了这个问题，为此也已经做了很多努力。在Windows 98的第二版中，微软第一次尝试了它的“Fusion”技术，也就是“side-by-side DLLs”。不过令人遗憾的是它仅仅是有限的调整:允许应用程序选择或者覆盖或者将共享的文件保存到一个特定的位置，每个文件只为特定的应用程序服务，这样所有同名的DLL文件就可以共存并和睦相处了。这个办法要求应用程序制作者在开发时要将DLL文件在程序安装时能够自动另存到其他目录考虑进去，由于这项功能只有第二版的Windows 98才有，所以很少有哪位软件开发者会乐意用它。另外，在Windows 2000和Windows Me中，都有类似的技术来防止系统的关键文件被覆盖。
其实最值得我们等待的是下一代的“Fusion”技术Fusion 2.0，它将在Visual Studio和Windows XP中得到实现，并在2001年上半年和Visual Studio 7以及COM+ 2.0共同面世。一定会令所有的Windows用户都会喜出望外。