Dependency Walker
【工具篇】@[TOC]Dependency Walker
Dependency Walker
之前一直用Dependency Walker看DLL導(dǎo)出接口,今天總結(jié)一下 Dependency Walker 使用說明。如果你想學(xué)習(xí)如何使用Dependency Walker, 可以仔細(xì)閱讀這篇文章,了解一下Dependency Walker對你以后調(diào)試DLL有所幫助。
1.什么是DLL?
在Windows世界中,有無數(shù)塊活動的大陸,它們都有一個共同的名字——動態(tài)鏈接庫?,F(xiàn)在就讓我們走進這些神奇的活動大陸,找出它們隱藏已久的秘密吧!
初窺門徑:Windows的基石
隨便打開一個系統(tǒng)目錄,一眼望去就能看到很多擴展名DLL的文件,這些就是經(jīng)常說的“動態(tài)鏈接庫”,DLL是Dynamic Link Library(即“動態(tài)鏈接庫”)的縮寫。從Microsoft公司推出首個版本的Windows以來,動態(tài)鏈接庫就一直是這個操作系統(tǒng)的基礎(chǔ)。
2.DLL有什么?
與其用晦澀的專業(yè)術(shù)語來解決DLL是什么,不如先來看看DLL里有什么。DLL和EXE文件一樣,其中包含的也是程序的二進制執(zhí)行代碼和程序所需的資源(比如圖標(biāo)、對話框、字符串等),可是為什么要把代碼放在DLL里面,而不是做成EXE呢?其實DLL中的代碼是以API函數(shù)形式出現(xiàn)的,通俗地說,DLL中包含的程序代碼都被做成了一個個小模塊,應(yīng)用程序通過按下所需DLL中特定的按鈕,來調(diào)用DLL中這個按鈕所代表的功能。在使用“記事本”等程序時,如果要保存文件或打開文件,就會彈出通用文件對話框,讓我們選擇文件位置。你可知道,這就是調(diào)用了系統(tǒng)底層DLL中的通用對話框界面。
3.系統(tǒng)中幾個重要DLL
Windows中有3個非常重要的底層DLL:Kernel32.dll、User32.dll、GDI32.dll。其中Kernel32.dll顧名思義就是內(nèi)核相關(guān)的功能,主要包含用于管理內(nèi)存、進程和線程的函數(shù);而User32.dll中包含的則是用于執(zhí)行用戶界面任務(wù)的函數(shù),比如把用戶的鼠標(biāo)點擊操作傳遞給窗口,以便窗口根據(jù)用戶的點擊來執(zhí)行預(yù)定的事件;GDI32.dll的名稱用了縮寫,全稱是Graphical Device Interface(圖形設(shè)備接口),包含用于畫圖和顯示文本的函數(shù),比如要顯示一個程序窗口,就調(diào)用了其中的函數(shù)來畫這個窗口。
4.為什么要用DLL
DLL真的只是將程序代碼封裝成函數(shù)?為什么封裝成函數(shù),就能成為系統(tǒng)中大量使用DLL的理由呢?帶著這幾個問題理解下面五點內(nèi)容。
①應(yīng)用程序的擴展
由于DLL能被應(yīng)用程序動態(tài)載入內(nèi)存,應(yīng)用程序可以在需要的時候才將DLL載入到內(nèi)存中,這使程序的可維護性變高。例如騰訊QQ,如果視頻部門需要將騰訊視頻升級,負(fù)責(zé)編寫的程序員不需要將所有代碼都重寫,只需要更新相應(yīng)的DLL文件即可;
②程序員之間合作
簡單理解就像建一座大廈需要很多公司合作,有負(fù)責(zé)材料的公司,有負(fù)責(zé)運輸公司,有負(fù)責(zé)裝修的公司,不同公司用的工具有不同。最后都要按照設(shè)計師的圖紙進行組合。我們知道編程工具有很多VS、VC、ECLIPSE、QT creater等,如果好幾個人合作,編寫一個程序
總結(jié)
以上是生活随笔為你收集整理的Dependency Walker的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星s8android8.0,三星S8国
- 下一篇: 【机器学习】总结:线性回归求解中梯度下降