一,動態(tài)鏈接庫的基本概念

1.DLL(Dynamic Linker Library)的概念

  • 可以把DLL看做是一個倉庫,它提供了一些可以直接拿來用的變量,函數(shù)或者類(但是不建議從DLL中獲取變量),在歷史的發(fā)展中,倉庫經(jīng)歷了從“無庫 - 靜態(tài)鏈接庫 - 動態(tài)鏈接庫”的時代。

  • 靜態(tài)鏈接庫(.lib)和動態(tài)鏈接庫(.dll)都是共享代碼的方式。如果采用了靜態(tài)鏈接庫,則無論你愿不愿意lib中的代碼指令都被直接包含進(jìn)了最終生成的.exe程序中。但若是使用了動態(tài)鏈接庫,該DLL則不會被包含進(jìn).exe程序中,當(dāng).exe程序執(zhí)行的時候,再“動態(tài)”的來引用或者卸載DLL。

2.動態(tài)鏈接庫的特點

  • DLL文件可以被其他的語言所調(diào)用,例如C#或者Java等。

  • 譬如Window下的存在大量的DLL文件,當(dāng)我們用Java編寫Swing界面或者其他語言如C#等都是可以進(jìn)行調(diào)用的。

3.常見的動態(tài)鏈接庫

  • 我們在Window系統(tǒng)下面的system32文件夾中會看到kernel.dll、user32.dll和gdi32.dll。Window系統(tǒng)下的大多數(shù)API都是包含在這些DLL中。

  • kernel.dll中的函數(shù)主要處理內(nèi)存管理和進(jìn)程的調(diào)度。

  • user32.dll中的函數(shù)主要控制用戶界面。

  • gdi32.dll中的函數(shù)主要負(fù)責(zé)圖形方面的操作。

網(wǎng)友評論