Windows的動態連結程式庫原理及使用1

來源:互聯網
上載者:User

1.Windows的動態連結程式庫原理

動態連結程式庫(DLLs)是從C語言函數庫和Pascal庫單元的概念發展而來的。所有的C語言標準庫函數都存放在某一函數庫中,同時使用者也可以用LIB程式建立自己的函數庫。在連結應用程式的過程中,連結器從庫檔案中拷貝程式調用的函數代碼,並把這些函數代碼添加到可執行檔中。這

種方法同只把函數儲存在已編譯的.OBJ檔案中相比更有利於代碼的重用。

但隨著Windows這樣的多任務環境的出現,函數庫的方法顯得過於累贅。如果為了完成螢幕輸出、訊息處理、記憶體管理、對話方塊等操作,每個程式都不得不擁有自己的函數,那麼Windows程式將變得非常龐大。Windows的發展要求允許同時啟動並執行幾個程式共用一組函數的單一拷貝。動態

連結庫就是在這種情況下出現的。動態連結程式庫不用重複編譯或連結,一旦裝入記憶體,Dlls函數可以被系統中的任何正在啟動並執行應用程式軟體所使用,而不必再將DLLs函數的另一拷貝裝入記憶體。

1.1 動態連結程式庫的工作原理

"動態連結"這幾字指明了DLLs是如何工作的。對於常規的函數庫,連結器從中拷貝它需要的所有庫函數,並把確切的函數地址傳送給調用這些函數的程式。而對於DLLs,函數儲存在一個獨立的動態連結程式庫檔案中。在建立Windows程式時,連結過程並不把DLLs檔案連結到程式上。直到程

序運行並調用一個DLLs中的函數時,該程式才要求這個函數的地址。此時Windows才在DLLs中尋找被調用函數,並把它的地址傳送給調用程式。採用這種方法,DLLs達到了複用代碼的極限。

動態連結程式庫的另一個方便之處是對動態連結程式庫中函數的修改可以自動傳播到所有調用它的程式中,而不必對程式作任何改動或處理。

DLLs不僅提供了函數重用的機制,而且提供了資料共用的機制。任何應用程式都可以共用由裝入記憶體的DLLs管理的記憶體資源塊。只包含共用資料的DLLs稱為資源檔。如Windows的字型檔等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.