首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 動態連結庫編程基礎概念與分類詳解

     編輯:VC 教學

DLL 核心概念

DLL (Dynamic Link Library) 即「共享代碼倉庫」。演進:**無庫 → 靜態庫 (.lib) → 動態庫 (.dll)**。靜態庫連結時將代碼**複製進 EXE**;動態庫運行時**映射到進程位址空間**,多進程共享同一份實體代碼 (記憶體節省),支援獨立更新部署。

三大關鍵特性

  1. 語言/編譯器中立:遵循呼叫慣例 (_stdcall 等) 與二進位介面 (ABI),VB/VC++/Delphi 可互調。
  2. 系統無處不在:kernel32.dll (記憶體/進程)、user32.dll (UI)、gdi32.dll (繪圖) 等核心 API 皆在 DLL 中。MessageBox 即來自 user32.dll。
  3. VC++ 三種 DLL 類型:
類型MFC 使用匯出介面客戶端限制
Non-MFC DLL無C 風格函數任意語言
MFC Regular DLL有 (衍生 CWinApp,無訊息迴路)C 風格函數/基本型別任意語言
MFC Extension DLL有 (動態連結 MFC)C++ 類別、MFC 型別**僅限 MFC 動態連結應用**

本教學系列規劃

  • 每主題附帶完整 VC6 專案源碼 (經測試)。
  • 源碼打包下載,含庫專案與測試專案,**同一工作區** 方便斷點進入庫代碼 (F11)。
  • 前置知識:C 基礎、C++ 初階、MFC 概念。

靜態庫快速入門 (鋪墊)

  1. 新專案 Win32 Static Library → lib.h/lib.cpp 實作 extern "C" int add(int,int)。
  2. 編譯產生 libTest.lib。
  3. 測試專案 #pragma comment(lib, "..\Debug\libTest.lib") 呼叫。

庫調試與查看工具

  • 調試:庫專案與測試專案同工作區,測試專案設斷點 F11 步入庫函數。
  • 查看匯出:Depends.exe (Dependency Walker) 開啟 DLL/EXE,查看匯出函數、依賴樹。示範 user32.dll 可見多版本 MessageBox。

下一步

進入 Non-MFC DLL 詳細開發:__declspec(dllexport/dllimport)、.def 檔、顯式/隱式連結、字串/結構體/類別跨 DLL 傳遞陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved