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