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

動態鏈接

用手机看条目

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

動態鏈接(Dynamic Linking)

目錄

什麼是動態鏈接[1]

  動態鏈接是指編譯系統在鏈接階段並不把目標文件和函數庫文件鏈接在一起,而是等到程式在運行過程中需要使用時才鏈接函數庫。

動態鏈接的優缺點[2]

  一、動態鏈接的優點是:

  1、共用:多個進程可以共用一個DLL,比較節省記憶體,從而可以減少文件的交換

  2、部分裝入:一個進程可以將多種操作分散在不同的DLL中實現,而只將當前操作的DLL裝入記憶體。

  3、便於局部代碼修改:即便於代碼升級和代碼重用;只要函數的介面參數(輸入和輸出)不變,則修改函數及其DLL時,無需對可執行文件重新編譯或鏈接。

  4、便於適應運行環境:調用不同的DLL,就可以適應多種使用環境並提供不同的功能。例如:不同的顯示卡只需廠商為其提供特定的DLL,而操作系統和應用程式則不必修改。

  二、動態鏈接的缺點是:

  1、增加了程式執行時的鏈接開銷。

  2、程式由多個文件組成,因此增加了管理複雜度。

動態鏈接與靜態鏈接[3]

  源程式在經過編譯生成目標代碼後需要進行鏈接才能生成可執行文件。鏈接分為兩種,一種是靜態鏈接,另一種是動態鏈接。動態鏈接發生在程式運行時,動態鏈接的函數代碼不出現在程式的EXE文件中;而靜態鏈接發生在編譯時,靜態鏈接的函數代碼實際被插入到程式的EXE文件中。用於靜態鏈接的函數通常保存在OBJ和IJB文件中。例如,編寫一個由一些獨立的編譯單元(文件)組成的大型程式時,鏈接器在創建EXE文件時將每個模塊MOBJ文件結合起來,此時EXE文件將包含OBJ文件中的所有代碼。

  使用動態鏈接時,用於動態鏈接的函數代碼保存在與程式的其他部分相獨立的DEF文件中。讀者將會看到,用戶的程式要包含鏈接DLL函數載入指令的少量代碼,但並不將函數本身包括進來。

參考文獻

  1. 吳士力,劉奇,朱蘭編著.第4章 Linux應用程式開發 入式LINUX應用開發全程解析與實戰.機械工業出版社,2010.01.
  2. 方敏主編;方敏,王亞平,權義寧,王長山編著.第5章 存儲管理 新世紀電腦類本科系列教材 電腦操作系統.西安電子科技大學出版社,2004年08月第1版.
  3. 李劍編著.VisualC++.NET實用教程.人民郵電出版社,2002年01月第1版.
本條目對我有幫助1
MBA智库APP

扫一扫,下载MBA智库APP

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

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

方小莉,刘维燎.

評論(共0條)

提示:評論內容為網友針對條目"動態鏈接"展開的討論,與本站觀點立場無關。

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

打开APP

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

下载APP

闽公网安备 35020302032707号