DLL (Dynamic Link Library) 即「共享代碼倉庫」。演進:**無庫 → 靜態庫 (.lib) → 動態庫 (.dll)**。靜態庫連結時將代碼**複製進 EXE**;動態庫運行時**映射到進程位址空間**,多進程共享同一份實體代碼 (記憶體節省),支援獨立更新部署。
_stdcall 等) 與二進位介面 (ABI),VB/VC++/Delphi 可互調。kernel32.dll (記憶體/進程)、user32.dll (UI)、gdi32.dll (繪圖) 等核心 API 皆在 DLL 中。MessageBox 即來自 user32.dll。| 類型 | MFC 使用 | 匯出介面 | 客戶端限制 |
|---|---|---|---|
| Non-MFC DLL | 無 | C 風格函數 | 任意語言 |
| MFC Regular DLL | 有 (衍生 CWinApp,無訊息迴路) | C 風格函數/基本型別 | 任意語言 |
| MFC Extension DLL | 有 (動態連結 MFC) | C++ 類別、MFC 型別 | **僅限 MFC 動態連結應用** |
lib.h/lib.cpp 實作 extern "C" int add(int,int)。libTest.lib。#pragma comment(lib, "..\Debug\libTest.lib") 呼叫。F11 步入庫函數。user32.dll 可見多版本 MessageBox。進入 Non-MFC DLL 詳細開發:__declspec(dllexport/dllimport)、.def 檔、顯式/隱式連結、字串/結構體/類別跨 DLL 傳遞陷阱。