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