-
用户模塊
鎖定
- 中文名
- 用户模塊
- 外文名
- The user module
- 分 類
- 靜態連接庫和動態連接庫
- 釋 義
- 由用户自己開發的
- 好 處
- 省去用户管理源代碼的煩惱等
- 區 別
- 應用程序有自己的消息循環等
目錄
- 1 用户模塊的分類
- 2 應用區別
- 3 應用程序和動態連接庫的區別
用户模塊用户模塊的分類
用户模塊可分為兩大類:靜態連接庫和動態連接庫。
動態連接庫是一個可執行模塊,其包含的函數可以由Windows應用程序調用以執行一些功能。動態連接庫主要為應用程序模塊提供服務。Windows內核的三個模塊USER.EXE、KENERL.EXE和GDI.EXE實際上都是動態連接庫,分別提供用户消息服務、進程管理、圖形輸出等服務。
動態連接庫也包含了其所提供的函數的目標代碼,但是在程序連接動態連接庫中的函數時,連接程序並不將包含在動態連接庫中的函數的目標代碼拷貝至運行文件,而只是簡單地記錄了函數的位置信息(即包含於哪個動態連接庫中以及在動態連接庫中的位置)。有了這些信息後,程序在執行時,即可找到該函數的目標代碼。因為只是在執行時才得到真正的連接,因此稱為動態連接。提供函數在動態連接庫中位置的信息存放在一個獨立的文件中,這個文件就是引入庫(IMPORT LIB)。
用户模塊應用區別
由於靜態連接庫將目標代碼連接到應用程序中,當程序運行時,如果兩個程序調用了同一靜態庫中的函數,內存中將出現該函數的多份拷貝。而動態連接庫則更適合於多任務環境:當兩個應用程序調用了同一動態連接庫中的同一個函數時,內存中只保留該函數的一份拷貝,這樣內存利用率更高。
但是,靜態庫由於將目標代碼連入應用程序中,應用程序可獨立運行。而使用動態連接庫時,隨同應用程序還要提供動態連接庫文件(DLL文件)。比如,發佈Visual C++編寫的程序時,如果使用了動態連接,則在提供可執行文件同時還需要提供Visual C++的動態連接庫。