Non-MFC Dlls(非MFC dll);指的是不用MFC的類庫(kù)結(jié)構(gòu),直接用C語(yǔ)言寫的DLL,其輸出函數(shù)一般是標(biāo)準(zhǔn)的C接口,能被非MFC和MFC編寫的應(yīng)用程序調(diào)用?梢杂谩癢in32 應(yīng)用程序向?qū)А眲?chuàng)建非 MFC DLL 項(xiàng)目。 Regular Dlls(MFC正規(guī)DLL),使用“MFC DLL 向?qū)А眲?chuàng)建,又分為靜態(tài)鏈接和動(dòng)態(tài)鏈接兩種。 Extension Dlls(MFC擴(kuò)展DLL),使用“MFC DLL 向?qū)А眲?chuàng)建,始終動(dòng)態(tài)鏈接MFC。 下面來自MSDN--確定要使用的dll的類型
如果 DLL 要使用 MFC,且將由 MFC 或非 MFC 應(yīng)用程序使用,則必須生成動(dòng)態(tài)鏈接到 MFC 的規(guī)則 DLL 或靜態(tài)鏈接到 MFC 的規(guī)則 DLL。大部分情況下可能需要使用動(dòng)態(tài)鏈接到 MFC 的規(guī)則 DLL,因?yàn)檫@種 DLL 的文件大小要小得多,且使用共享 MFC 版本會(huì)節(jié)省大量?jī)?nèi)存。如果是靜態(tài)鏈接到 MFC,則由于 DLL 會(huì)加載自己的私有 MFC 庫(kù)代碼副本,DLL 的文件大小會(huì)較大,且有可能占用額外的內(nèi)存。 生成動(dòng)態(tài)鏈接到 MFC 的 DLL 要比生成靜態(tài)鏈接到 MFC 的 DLL 快,因?yàn)榍罢卟恍桄溄?MFC 本身。在鏈接器必須壓縮調(diào)試信息的調(diào)試版本中尤其如此。通過與已經(jīng)包含調(diào)試信息的 DLL 鏈接,DLL 中將只有很少的調(diào)試信息需要壓縮。 動(dòng)態(tài)鏈接到 MFC 的一個(gè)缺點(diǎn)是必須用 DLL 發(fā)布共享 DLL:MFCx0.DLL 和 MSVCRT.DLL(或類似的文件)。MFC DLL 可隨便重新發(fā)布,但仍必須在安裝程序中安裝 DLL。另外必須交付 MSVCRT.DLL,它包含程序和 MFC DLL 本身都要使用的 C 運(yùn)行時(shí)庫(kù)。 如果 DLL 僅由 MFC 可執(zhí)行文件使用,則可以選擇生成規(guī)則 DLL 或擴(kuò)展 DLL。如果 DLL 實(shí)現(xiàn)從現(xiàn)有 MFC 類派生的可重用類,或如果需要在應(yīng)用程序和 DLL 之間傳遞 MFC 派生的對(duì)象,則必須生成擴(kuò)展 DLL。 如果 DLL 動(dòng)態(tài)鏈接到 MFC,則可能要用 DLL 重新發(fā)布 MFC DLL。當(dāng)在多個(gè)可執(zhí)行文件之間共享類庫(kù)以節(jié)省磁盤空間和最小化內(nèi)存使用時(shí),此結(jié)構(gòu)尤其有用。
|