荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ymboy (一只来之北方的狼), 信区: Microsoft
标  题: DLL系统文件冲突的解决
发信站: 荔园晨风BBS站 (Sat Mar 22 18:28:00 2003), 站内信件


相信很多朋友都有过这样的经历,安装了某些软件,在运行这些软件的时候,
Windows系统总是提示XXX.DLL出现不明问题而不能运行或出错,轻则软件不能运行
,重则导致Windows系统崩溃。遇到这种问题,我们该怎么解决呢?其实大部分此
类问题是因为支持这些软件运行的DLL文件与系统自身的DLL文件发生了冲突,让我
们来看看如何解决这种问题。
分析问题
为了说明问题,我们需要先了解Windows系统的另一种可执行文件.DLL,DLL是
Dynamic Link Library(动态链接库)的缩写,是Windows的基础(所有的API函数都
是在DLL中实现的)。它本身并没有程序逻辑,是由多个功能函数构成,不能独立运
行,必须由其他进程加载并调用。因此我们可以得到结论:在安装这些“问题”软
件的时候,它们把系统里一些DLL文件用自身所带的新版本或旧版本的DLL文件覆盖
了,这样能够保证它自身的正常运行。但问题是系统里的其他一些软件和系统本身
可能还需要以前版本的DLL文件才能正常运行,现在的文件版本变了,出错就在所
难免了。

通过以上的分析,笔者觉得如果能把不同版本的DLL文件都放在同一个系统里,使
不同的软件调用不同版本的DLL文件,相互之间不干扰,这样这些软件就可以和平
共处了。接下来笔者就开始着手解决让两个不同版本的DLL在一个系统中共存的问
题。

解决方法
我们以IBM语音识别系统4.0版为例,这个软件在Windows 98第一版中一直运行良好
,但安装在Windows 98第二版中就会出现问题。表现为使用该软件后系统中的其他
软件如IE、OE、记事本会报“KERNEL32.dll和OLEAUT32.DLL还有MFC42.DLL发现不
明问题无法使用”的错误信息,这就是明显的DLL系统文件冲突问题。发生冲突的
DLL文件是kernel32.dll、oleaut32.dll和mfc42.dll这三个文件。这时我们可以到
X:\Windows\system(x为Windows所在盘符)中找到这三个文件并把它们复制下来(有
些文件可能是隐藏属性的,请先去掉文件的隐藏属性),接下来就是最关键的地方
了,每个安装的软件在自己的根文件夹里一般都有一个用来存放DLL文件的专门文
件夹,文件夹的名字不定,要自己找。IBM语音识别系统的这个文件夹是X:
\ViaVoice中的bin文件夹,把刚才复制的三个文件粘贴到这个文件夹里。然后用系
统文件检查器(依次点击“开始→程序→附件→系统工具→系统信息→工具→系统
文件检查器”即可打开)选择从安装光盘提取一个文件,把上面的三个文件分别指
定到你要恢复的系统文件框里(注意:恢复的时候要使用Windows安装光盘)。点击
开始,在“还原自”里填写你的Windows安装盘地址,在“将文件保存到”里写x:
\Windows\system,然后点击确

定开始恢复文件。这样我们就可以恢复IE、OE、记事本这些软件所需的DLL文件了
。重新启动计算机后,以前不能运行的软件又可以正常运行了。

总结
除了语音识别系统外,其他很多的软件都可以用这种方法来解决DLL冲突的问题,
成功与否主要是看你能不能找到这个软件在根文件夹中用来存放DLL文件的文件夹
。这些软件启动的时候一般都是首先从这个文件夹里寻找它们所需的DLL文件,然
后才到Windows系统里的SYSTEM文件夹中寻找。因此我们就可以将不同版本的DLL文
件放在同一系统里供不同软件调用了。







--
        1、承认自己有不足
            2、明白哪里有不足
               3、知道怎么去改善
                   4、督促自己去改善
               发现了一个最简单的真理:比我勤奋的人都比我强。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 218.17.71.63]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店