動态鍊接庫原理?動态鍊接庫是一些編譯過的可執行程序模塊,包含代碼、數據或資源,可以在應用程序或其他動态鍊接庫中調用動态鍊接庫的文件擴展名一般為 .dll,也可以是 .drv(設備驅動程序)、.sys(系統文件)和.fon(字體文件),下面我們就來聊聊關于動态鍊接庫原理?接下來我們就一起去了解一下吧!
動态鍊接庫是一些編譯過的可執行程序模塊,包含代碼、數據或資源,可以在應用程序或其他動态鍊接庫中調用。動态鍊接庫的文件擴展名一般為 .dll,也可以是 .drv(設備驅動程序)、.sys(系統文件)和.fon(字體文件)。
DLL 應用廣泛,可以實現多個應用程序共享代碼和資源,是 Windows 程序設計中的一個非常重要的組成部分。
1.2 動态鍊接庫工作原理靜态鍊接:在程序鍊接時将庫中的代碼複制到可執行文件中。
當多個同樣的程序執行時,系統中保留了許多重複的代碼副本,造成了内存資源的浪費。如果使用動态鍊接庫,當建立應用程序的可執行文件時,則不必将 dll 鍊接到程序中,而是在應用程序運行時動态地裝載 dll,裝載時 dll 将被映射到進程的地址空間中。
因此,使用 dll 并不是把庫代碼複制出來,而是在程序中記錄了函數的入口點和接口,在程序執行時才将庫代碼裝入内存。所以,無論多少程序使用了 dll,内存中都隻有該 dll 的一個副本。當沒有程序使用它時,系統将它移出内存,減少了對内存和磁盤的要求。所以,使用 dll 的一個好處就是可以節省系統資源。
動态鍊接庫雖然屬于 windows 可執行文件,但它不是 exe 文件,不像 exe 文件那樣可以直接執行,dll 文件中包含可執行代碼是由 exe 文件調用的。
1.3 動态鍊接庫的特點動态鍊接庫最大的特點就是它的代碼在運行期間被動态地鍊接至調用它的程序中,不用重複編譯或鍊接,一旦裝入内存,dll 函數可以被系統中的任何正在運行的應用程序使用,它們共享該 dll 函數的單一拷貝。
dll 中一般由程序通用的過程、函數等構成,當然,也可以包含各種資源。使用 dll 的 exe 在編譯時,編譯器将把程序中用到的 dll 文件中的例程(函數、過程)、數據(圖片、字符串等資源)等建立一個列表放在 exe 中。也就是說,在創建 windows 應用程序時,鍊接過程并不把 dll 文件中的例程鍊接到程序上,隻有當 exe 文件運行時并需要調用一個 dll 文件中的函數或過程時,windows 才在 dll 中尋找被調用函數并把它的地址傳遞給調用程序。
dll 獨立于編程語言,也就是說,用某種語言編寫的 dll 文件可以被其他語言調用。
對 dll 文件的升級和更新是和應用程序無關的,任何升級都可以自動傳播到所有調用該 dll 的應用程序中。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!