全球专业中文经管百科,由121,994位网友共同编写而成,共计436,034个条目

用戶模塊

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

目錄

什麼是用戶模塊

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

用戶模塊的分類

  用戶模塊可分為兩大類:靜態連接庫和動態連接庫。

  靜態連接庫提供了函數的完整的目標代碼,如果程式調用靜態連接庫中的函數,則在進行連接時連接程式將靜態連接庫中所包含的該函數的代碼拷貝至運行文件中。

  動態連接庫是一個可執行模塊,其包含的函數可以由Windows應用程式調用以執行一些功能。動態連接庫主要為應用程式模塊提供服務。Windows內核的三個模塊USER.EXE、KENERL.EXE和GDI.EXE實際上都是動態連接庫,分別提供用戶消息服務、進程管理、圖形輸出等服務。

  動態連接庫也包含了其所提供的函數的目標代碼,但是在程式連接動態連接庫中的函數時,連接程式並不將包含在動態連接庫中的函數的目標代碼拷貝至運行文件,而只是簡單地記錄了函數的位置信息(即包含於哪個動態連接庫中以及在動態連接庫中的位置)。有了這些信息後,程式在執行時,即可找到該函數的目標代碼。因為只是在執行時才得到真正的連接,因此稱為動態連接。提供函數在動態連接庫中位置的信息存放在一個獨立的文件中,這個文件就是引入庫(IMPORT LIB)。

用戶模塊的內容區別

  由於靜態連接庫將目標代碼連接到應用程式中,當程式運行時,如果兩個程式調用了同一靜態庫中的函數,記憶體中將出現該函數的多份拷貝。而動態連接庫則更適合於多任務環境:當兩個應用程式調用了同一動態連接庫中的同一個函數時,記憶體中只保留該函數的一份拷貝,這樣記憶體利用率更高。

  利用動態連接庫還可以實現資源共用:像Windows下的串列口、並行口驅動程式都是動態連接庫;另外,Windows下的字體也是動態連接庫。

  但是,靜態庫由於將目標代碼連入應用程式中,應用程式可獨立運行。而使用動態連接庫時,隨同應用程式還要提供動態連接庫文件(DLL文件)。比如,發佈Visual C++編寫的程式時,如果使用了動態連接,則在提供可執行文件同時還需要提供Visual C++的動態連接庫。

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

本條目對我有幫助0
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目投訴舉報

本条目由以下用户参与贡献

LuyinT.

評論(共0條)

提示:評論內容為網友針對條目"用戶模塊"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成

官方社群
下载APP

闽公网安备 35020302032707号