動態連結庫 (DLL) 起源於 C 語言函數庫與 Pascal 庫單元的概念。早期的靜態函數庫在連結階段將所需函數代碼直接拷貝至可執行文件,雖利於代碼重用,但在 Windows 這類多任務環境下顯得笨重:若每個程式都自備屏幕輸出、訊息處理、記憶體管理等常用功能的代碼副本,可執行文件將異常龐大,且浪費寶貴的記憶體資源。
IAT 是一張函數指標表,儲存每個導入函數的實際入口地址。動態連結的本質就是在運行時動態填寫這張表。
| 類型 | 用途 | 典型例子 |
|---|---|---|
| 系統 DLL | 提供核心 OS 服務 | kernel32.dll, user32.dll, gdi32.dll |
| 應用專用 DLL | 封裝業務邏輯、插件擴展 | 外掛模組、資源庫 |
| 資源 DLL | 純數據共享(圖示、字體、字串表) | 字體文件、多語言資源包 |

理解 DLL 原理是掌握 Windows 系統編程、插件架構設計及進程間通訊的基石。