共用方式為


動態連結的優點

動態連結對於靜態連結具有下列優點:

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

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