论文部分内容阅读
本文可以学到: 1.Windows中蓝屏错误和DLL冲突主要原因 2. 重名问题和版本冲突的案例 3. XP和Vista对蓝屏和DLL冲突问题的改进
自从Windows 98做了Windows武林盟主之后,软件帮派们的冲突此消彼长。起先,某个软件帮派里的一个EXE兄弟说的算,但是Windows 98做了盟主之后,EXE兄弟权力被大大削弱,他只能负责启动和协调软件帮派,而EXE老大把其他工作交代给了一群DLL小弟。这样一来,哪个小弟不听话,就把他发配原籍重新修炼,被修复后才能重新回归Windows武林。武林盟主一直以为这样的办法能减少冲突,但他做梦也没想到DLL小弟犯错的几率更高,甚至有的DLL小弟把冲突升级为武林争斗,引发Windows蓝屏。这些小弟怎敢犯上作乱?听说先后新上任的XP和Vista盟主有了新的办法维护Windows武林秩序,他又是如何避免Windows蓝屏呢?
案例1:重名问题
有一个计算器软件帮派中的小弟叫Calc.dll,他的本领可大着呢,会十六进制计算,另一个计算税率的软件帮派中也有一个小弟叫Calc.dll,不过他的本领一般,只会加减乘除四则运算。不凑巧的是,这两个同名小弟同时进入Windows武林,并且老大交代让名叫“Calc.dll”的小弟去办事儿,这时到底谁去?两个小弟还真有办法糊弄老大,点名的时候互相代答“到”,轮流上岗,可是两个人谁都不愿真的去替老大卖命,结果导致事儿没办成遭到老大的责难。这时候他们才开始互相埋怨“蓝屏”就此产生了。
XP盟主解决办法:编制身份证号
这还了得,一个小小的计算器帮派都敢这么干,XP盟主不想点奇招怎能服众?XP立刻约法三章,所有DLL兄弟必须遵守“道”上的规矩—COM(组件对象模型)标准。约法三章的第一项就是必须给每个DLL兄弟编身份证号,然后在注册表注册后才能使用,这下各帮派老大心里就有数了,谁也不能偷懒,而且,即使两个DLL兄弟一个修炼自VB法门,另一个来自C++法门,只要共同遵守COM规矩,就能互相取长补短,共同为老大卖命。
小知识:什么是COM组件
“COM”是微软发布的一个规范,在Windows XP下面的EXE和DLL文件都遵循这一规范,这样就尽量避免了蓝屏,而且遵循COM规范所发布的EXE和DLL文件,即使是使用不同的编程语言编写的,也能够互相调用不同组件的函数。
案例2:版本问题
有了“道”上的规矩,重名的问题解决了,两个Calc.dll彼此握手言和了,但是一波未平,一波又起,这时候帮派里面又来了一个师妹UI.dll,其实她只负责界面显示,开始计算器帮派只负责十六进制运算和普通的加减乘除,但是帮派老大EXE觉得不满意,一定得有八进制的,由于UI.dll师妹相当漂亮,两个Calc.dll都想取得她的欢心,结果十六进制Calc.dll苦练内功,学会了八进制,而且能根据UI.dll的不同要求很智能地告诉她计算结果,可是负责税率运算的Calc.dll兄弟哪能忍得了,他趁十六进制Calc.dll兄弟修炼的时候自己抢先一步,凑合练成了八进制,但是他太呆,必须让UI.dll小师妹告诉他到底用什么进制计算才能告诉她计算结果,UI.dll当然嫌麻烦,税率计算的Calc.dll恼羞成怒,当着EXE老大的面竟然和她大吵了起来,不断弹出“DLL冲突”提示框,砸了UI.dll小师妹的场子。
Vista盟主的解决方法:发武林花名册
看来这“道”上的规矩又得与时俱进了,这次提示框事件又震动武林,Vista盟主想了一个更好的方法,给所有软件帮派发“武林花名册”,学名叫“元数据”,里面包含了每个帮派所有小弟的版本信息,哪个小弟去修炼回来后成了新的版本都要登记,绝不能谁也不认识谁,从此之后各个武林帮派互相拆台砸场子的现象基本没有了。而且,Vista盟主发现让众多DLL都在注册表登记太麻烦了,极大降低了武林的运作效率,他又发布了便民措施,以后乐于为大家提供公共服务的DLL兄弟不用向注册表注册了,直接送到C:\windows\Assembly(见图1)办公大楼里面办公,那里宽敞明亮,还能宽带上网(自动更新),门口备有服务大厅,牌子上写着“.NET配置工具”(见图2),方便用户和盟主检查工作,这下盟主、各帮派老大还有各个小弟们都很高兴。
图1
图2
小提示:DLL兄弟是怎么炼成的?
除了用VS生成外,还可以用命令行生成DLL文件,比如要把a.cs文件发布为a.dll文件,只需打开命令行工具,键入“csc a.dll /t:library a.cs”即可。
自从Windows 98做了Windows武林盟主之后,软件帮派们的冲突此消彼长。起先,某个软件帮派里的一个EXE兄弟说的算,但是Windows 98做了盟主之后,EXE兄弟权力被大大削弱,他只能负责启动和协调软件帮派,而EXE老大把其他工作交代给了一群DLL小弟。这样一来,哪个小弟不听话,就把他发配原籍重新修炼,被修复后才能重新回归Windows武林。武林盟主一直以为这样的办法能减少冲突,但他做梦也没想到DLL小弟犯错的几率更高,甚至有的DLL小弟把冲突升级为武林争斗,引发Windows蓝屏。这些小弟怎敢犯上作乱?听说先后新上任的XP和Vista盟主有了新的办法维护Windows武林秩序,他又是如何避免Windows蓝屏呢?
案例1:重名问题
有一个计算器软件帮派中的小弟叫Calc.dll,他的本领可大着呢,会十六进制计算,另一个计算税率的软件帮派中也有一个小弟叫Calc.dll,不过他的本领一般,只会加减乘除四则运算。不凑巧的是,这两个同名小弟同时进入Windows武林,并且老大交代让名叫“Calc.dll”的小弟去办事儿,这时到底谁去?两个小弟还真有办法糊弄老大,点名的时候互相代答“到”,轮流上岗,可是两个人谁都不愿真的去替老大卖命,结果导致事儿没办成遭到老大的责难。这时候他们才开始互相埋怨“蓝屏”就此产生了。
XP盟主解决办法:编制身份证号
这还了得,一个小小的计算器帮派都敢这么干,XP盟主不想点奇招怎能服众?XP立刻约法三章,所有DLL兄弟必须遵守“道”上的规矩—COM(组件对象模型)标准。约法三章的第一项就是必须给每个DLL兄弟编身份证号,然后在注册表注册后才能使用,这下各帮派老大心里就有数了,谁也不能偷懒,而且,即使两个DLL兄弟一个修炼自VB法门,另一个来自C++法门,只要共同遵守COM规矩,就能互相取长补短,共同为老大卖命。
小知识:什么是COM组件
“COM”是微软发布的一个规范,在Windows XP下面的EXE和DLL文件都遵循这一规范,这样就尽量避免了蓝屏,而且遵循COM规范所发布的EXE和DLL文件,即使是使用不同的编程语言编写的,也能够互相调用不同组件的函数。
案例2:版本问题
有了“道”上的规矩,重名的问题解决了,两个Calc.dll彼此握手言和了,但是一波未平,一波又起,这时候帮派里面又来了一个师妹UI.dll,其实她只负责界面显示,开始计算器帮派只负责十六进制运算和普通的加减乘除,但是帮派老大EXE觉得不满意,一定得有八进制的,由于UI.dll师妹相当漂亮,两个Calc.dll都想取得她的欢心,结果十六进制Calc.dll苦练内功,学会了八进制,而且能根据UI.dll的不同要求很智能地告诉她计算结果,可是负责税率运算的Calc.dll兄弟哪能忍得了,他趁十六进制Calc.dll兄弟修炼的时候自己抢先一步,凑合练成了八进制,但是他太呆,必须让UI.dll小师妹告诉他到底用什么进制计算才能告诉她计算结果,UI.dll当然嫌麻烦,税率计算的Calc.dll恼羞成怒,当着EXE老大的面竟然和她大吵了起来,不断弹出“DLL冲突”提示框,砸了UI.dll小师妹的场子。
Vista盟主的解决方法:发武林花名册
看来这“道”上的规矩又得与时俱进了,这次提示框事件又震动武林,Vista盟主想了一个更好的方法,给所有软件帮派发“武林花名册”,学名叫“元数据”,里面包含了每个帮派所有小弟的版本信息,哪个小弟去修炼回来后成了新的版本都要登记,绝不能谁也不认识谁,从此之后各个武林帮派互相拆台砸场子的现象基本没有了。而且,Vista盟主发现让众多DLL都在注册表登记太麻烦了,极大降低了武林的运作效率,他又发布了便民措施,以后乐于为大家提供公共服务的DLL兄弟不用向注册表注册了,直接送到C:\windows\Assembly(见图1)办公大楼里面办公,那里宽敞明亮,还能宽带上网(自动更新),门口备有服务大厅,牌子上写着“.NET配置工具”(见图2),方便用户和盟主检查工作,这下盟主、各帮派老大还有各个小弟们都很高兴。
图1
图2
小提示:DLL兄弟是怎么炼成的?
除了用VS生成外,还可以用命令行生成DLL文件,比如要把a.cs文件发布为a.dll文件,只需打开命令行工具,键入“csc a.dll /t:library a.cs”即可。