DLL Hell

DLL Hell

"DLL HELL"是一種由於com組件升級引起的程式不能運行的計算機錯誤,通常發生在安裝了新的軟體後以及刪除或替換掉某些系統檔案後。

基本介紹

  • 中文名:DLL Hell
  • 字面意思:災難
  • 性質:com組件升級引起的程式不能運行
  • 方式動態程式庫
DLL噩夢,可能的原因,

DLL噩夢

DLL HELL字面意思是DLL"災難",是由於com組件升級引起的程式不能運行的情況。
COM對象常常被編譯為dll檔案。COM組件模型雖然很不錯,但是它自身存在致命的缺陷。由於COM對象可以被重用,這樣多個程式可能使用一個COM對象 ,如果這個COM組件升級了,就很有可能出現其中某個程式無法使用新組件,導致程式不能運行的情況,這種情況被稱為“DLL HELL”。有時安裝了新的軟體後很多其他的軟體都無法使用,往往就是這個原因。
Windows系統是以Dynamic Link Library(動態程式庫)的方式讓系統和套用軟體共用所有的系統檔案的。
DLL Hell的意思就是因為系統檔案被覆蓋而讓整個系統像是掉進了地獄(什麼軟體都不能運行了)。

可能的原因

很多windows的應用程式在發布的時候會將它們所有要用到的DLL都一起打包發布,很多應用程式的安裝程式都不是很成熟,經常在安裝的時候將一個舊版本的DLL覆蓋掉一個更新版本的DLL,從而導致其他的應用程式運行失敗。有些安裝程式比較友好,如果碰到需要覆蓋新版的DLL時,它會彈出一個對話框提醒用戶是否覆蓋,但是即使這樣,有些應用程式只能運行在舊版本的DLL下,如果不覆蓋,那么它可能無法在新版的DLL中運行。總的來說,有三種可能的原因導致了DLL Hell的發生:
一是由使用舊版本的DLL替代原來一個新版本的DLL而引起的。這個原因最普遍,是Windows 9X用戶通常遇到的DLL錯誤之一。
二是由新版DLL中的函式無意發生改變而引起。儘管在設計DLL時候應該向下兼容,然而要保證DLL完全向下兼容卻是不能的。
三是由新版DLL的安裝引入一個新的Bug。

相關詞條

熱門詞條

聯絡我們