一、概述 1、可以簡單的把動(dòng)態(tài)鏈接庫(dynamic-link library,DLL) 看成一種倉庫,它提供給我們一些可以直接拿來用的變量、函數(shù)或類。 2、DLL是Windows操作系統(tǒng)的基石。Windows應(yīng)用程序編程接口(API)提供的所有函數(shù)都包含在DLL中。其中三個(gè)最重要的DLL分別是: Kernel32.dll,包含的函數(shù)用來管理內(nèi)存、進(jìn)程以及線程; User32.dll,包含的函數(shù)用來執(zhí)行與用戶界面相關(guān)的任務(wù),如創(chuàng)建窗口和發(fā)送消息; GDI32.dll,包含的函數(shù)負(fù)責(zé)圖形方面的操作。 二、靜態(tài)鏈接庫與動(dòng)態(tài)鏈接庫 1、相同點(diǎn): 都是共享代碼的方式 2、不同點(diǎn): 采用靜態(tài)鏈接庫,無論你愿不愿意,lib中的指令都被直接包含在最終生成的EXE文件中了。但是若使用DLL,該DLL不必被包含在最終EXE文件中,EXE文件執(zhí)行時(shí)可以“動(dòng)態(tài)”地引用和卸載這個(gè)與EXE獨(dú)立的DLL文件。 三、動(dòng)態(tài)鏈接庫的分類 1、非MFC動(dòng)態(tài)庫:不采用MFC類庫結(jié)構(gòu),能被非MFC或MFC編寫的應(yīng)用程序所調(diào)用 2、MFC規(guī)則DLL:包含一個(gè)繼承自CWinApp的類,能被非MFC或MFC編寫的應(yīng)用程序所調(diào)用 3、MFC擴(kuò)展DLL:創(chuàng)建實(shí)現(xiàn)可重用的類的MFC擴(kuò)展DLL(該類是從現(xiàn)有MFC類庫派生的),所產(chǎn)生的DLL只能由MFC應(yīng)用程序使用 四 、如何選擇DLL的類型 1、相比使用了MFC的DLL而言,非MFC DLL顯得更為短小精悍。因此,如果DLL不需要使用MFC,那么使用非MFC DLL是一個(gè)很好的選擇,它將顯著地節(jié)省磁盤和內(nèi)存空間。同時(shí),無論應(yīng)用程序是否使用了MFC,都可以調(diào)用非MFC DLL中所導(dǎo)出的函數(shù)。 2、如果需要?jiǎng)?chuàng)建使用MFC的DLL,并希望MFC和非MFC應(yīng)用程序都能使用所創(chuàng)建的DLL,那么可以選擇MFC規(guī)則DLL。 3、如果希望在DLL中實(shí)現(xiàn)從MFC派生的可重用的類,或者是希望在應(yīng)用程序和DLL之間傳遞MFC的派生對象時(shí),必須選擇MFC擴(kuò)展DLL。 五、DLL的調(diào)試 方法1:DLL不能單獨(dú)執(zhí)行,在按下F5(debug模式執(zhí)行)執(zhí)行時(shí),彈出調(diào)試會(huì)話的可執(zhí)行文件的對話框,要求用戶輸入可執(zhí)行文件的路徑來啟動(dòng)DLL的執(zhí)行,這個(gè)時(shí)候我們輸入要調(diào)用該DLL的EXE文件的路徑就可以對庫進(jìn)行調(diào)試了。 方法2:將DLL工程和應(yīng)用程序工程放置在同一解決方案中,只對應(yīng)用程序工程進(jìn)行調(diào)試,在應(yīng)用程序工程調(diào)用DLL中函數(shù)的語句處設(shè)置斷點(diǎn),執(zhí)行后按下F11,這樣就單步進(jìn)入了DLL中的函數(shù)。 |
|