共用方式為


動態鏈接的優點

動態連結在靜態連結上具有下列優點:

  • 在相同基位址載入相同 DLL 的多個進程會在物理記憶體中共用 DLL 的單一複本。 這樣做可節省系統記憶體並減少交換。
  • 當 DLL 中的函式變更時,只要函式自變數、呼叫慣例和傳回值不變更,就不需要重新編譯或重新連結使用這些函式的應用程式。 相反地,靜態連結的物件程式代碼要求應用程式在函式變更時重新連結。
  • DLL 可以提供市場後支援。 例如,可以修改顯示驅動程式 DLL 以支援一開始出貨應用程式時無法使用的顯示器。
  • 以不同程式設計語言撰寫的程式只要程式遵循函式所使用的相同呼叫慣例,就可以呼叫相同的 DLL 函式。 呼叫慣例(例如 C、Pascal 或標準呼叫)會控制呼叫函式必須將自變數推送至堆疊的順序、函式或呼叫函式負責清除堆棧,以及是否有任何自變數在緩存器中傳遞。 如需詳細資訊,請參閱編譯程式隨附的檔。

使用 DLL 的潛在缺點是應用程式不是獨立式;這取決於個別 DLL 模組的存在。 如果行程啟動時找不到所需的 DLL,系統會終止該進程,方法是使用載入時間的動態連結,並向使用者提供錯誤訊息。 在此情況下,系統不會使用運行時間動態連結終止進程,但遺漏 DLL 所導出的函式無法供程式使用。