用戶模組

用戶模組

定義 用戶模組是由用戶自己開發的、可以加入到最終用戶(包括用戶本人和其他使用該模組的人)應用程式中提供某一特定功能的函式和類的集合。 為了完成同樣的工作,也可以向最終用戶提供源程式。但是,使用用戶模組有許多好處:首先是省去用戶管理原始碼的煩惱,用戶許多情況下往往並不關心模組的內部實現,他只是想把它作為一個黑匣子使用。另外,模組的開發者有時候並不希望模組使用者看到原始碼。還有,使用模組而不使用原始碼還可以避免模組的函式名、變數名與最終用戶的程式上的衝突。

基本介紹

  • 中文名:用戶模組
  • 外文名:The user module
  • 分類:靜態連線庫和動態連線庫
  • 釋義:由用戶自己開發的
  • 好處:省去用戶管理原始碼的煩惱等
  • 區別:應用程式有自己的訊息循環等
用戶模組的分類,靜態連線庫與動態連線庫的區別,應用程式和動態連線庫的區別,

用戶模組的分類

用戶模組可分為兩大類:靜態連線庫和動態連線庫
靜態連線庫提供了函式的完整的目標代碼,如果程式調用靜態連線庫中的函式,則在進行連線時連線程式將靜態連線庫中所包含的該函式的代碼拷貝至運行檔案中。
動態連線庫是一個可執行模組,其包含的函式可以由Windows應用程式調用以執行一些功能。動態連線庫主要為應用程式模組提供服務。Windows核心的三個模組USER.EXE、KENERL.EXE和GDI.EXE實際上都是動態連線庫,分別提供用戶訊息服務、進程管理圖形輸出等服務。
動態連線庫也包含了其所提供的函式的目標代碼,但是在程式連線動態連線庫中的函式時,連線程式並不將包含在動態連線庫中的函式的目標代碼拷貝至運行檔案,而只是簡單地記錄了函式的位置信息(即包含於哪個動態連線庫中以及在動態連線庫中的位置)。有了這些信息後,程式在執行時,即可找到該函式的目標代碼。因為只是在執行時才得到真正的連線,因此稱為動態連線。提供函式在動態連線庫中位置的信息存放在一個獨立的檔案中,這個檔案就是引入庫(IMPORT LIB)。

靜態連線庫與動態連線庫的區別

由於靜態連線庫將目標代碼連線到應用程式中,當程式運行時,如果兩個程式調用了同一靜態庫中的函式,記憶體中將出現該函式的多份拷貝。而動態連線庫則更適合於多任務環境:當兩個應用程式調用了同一動態連線庫中的同一個函式時,記憶體中只保留該函式的一份拷貝,這樣記憶體利用率更高。
利用動態連線庫還可以實現資源共享:像Windows下的串列口並行口驅動程式都是動態連線庫;另外,Windows下的字型也是動態連線庫。
但是,靜態庫由於將目標代碼連入應用程式中,應用程式可獨立運行。而使用動態連線庫時,隨同應用程式還要提供動態連線庫檔案(DLL檔案)。比如,發布Visual C++編寫的程式時,如果使用了動態連線,則在提供執行檔同時還需要提供Visual C++的動態連線庫

應用程式和動態連線庫的區別

應用程式和動態連線庫都是完成一定功能的可執行模組。它們的區別是:應用程式有自己的訊息循環,而動態連線庫沒有自己的訊息循環(但是它可以傳送訊息);應用程式一般是主動完成某一功能的,而動態連線庫主要是被動(在中斷驅動程式中也主動完成一些功能)的提供服務。

相關詞條

熱門詞條

聯絡我們