VC++動態(tài)鏈接庫(DLL)編程之庫的調(diào)試與查看
在具體進入各類DLL的詳細闡述之前,有必要對庫文件的調(diào)試與查看方法進行一下介紹,因為從下一節(jié)開始我們將面對大量的例子工程。 由于庫文件不能單獨執(zhí)行,因而在按下F5(開始debug模式執(zhí)行)或CTRL+F5(運行)執(zhí)行時,其彈出如圖3所示的對話框,要求用戶輸入可執(zhí)行文件的路徑來啟動庫函數(shù)的執(zhí)行。這個時候我們輸入要調(diào)用該庫的EXE文件的路徑就可以對庫進行調(diào)試了,其調(diào)試技巧與一般應(yīng)用工程的調(diào)試一樣。
通常有比上述做法更好的調(diào)試途徑,那就是將庫工程和應(yīng)用工程(調(diào)用庫的工程)放置在同一VC工作區(qū),只對應(yīng)用工程進行調(diào)試,在應(yīng)用工程調(diào)用庫中函數(shù)的語句處設(shè)置斷點,執(zhí)行后按下F11,這樣就單步進入了庫中的函數(shù)。第2節(jié)中的libTest和libCall工程就放在了同一工作區(qū),其工程結(jié)構(gòu)如圖4所示。
上述調(diào)試方法對靜態(tài)鏈接庫和動態(tài)鏈接庫而言是一致的。所以本文提供下載的所有源代碼中都包含了庫工程和調(diào)用庫的工程,這二者都被包含在一個工作區(qū)內(nèi),這是筆者提供這種打包下載的用意所在。 動態(tài)鏈接庫中的導(dǎo)出接口可以使用Visual C++的Depends工具進行查看,讓我們用Depends打開系統(tǒng)目錄中的user32.dll,看到了吧?紅圈內(nèi)的就是幾個版本的MessageBox了!原來它真的在這里啊,原來它就在這里??!
當(dāng)然Depends工具也可以顯示DLL的層次結(jié)構(gòu),若用它打開一個可執(zhí)行文件則可以看出這個可執(zhí)行文件調(diào)用了哪些DLL。
|