Share via


DLL 的類型

本主題提供的資訊可協助您判斷要建置的 DLL 種類。

可用的不同 DLL 種類

您可以使用 Visual Studio,在 C 或 C++ 中建置不使用 Microsoft Foundation Class (MFC) 程式庫的 Win32 DLL。 您可以使用 Win32 應用程式精靈建立非 MFC DLL 專案。

MFC 程式庫本身可在靜態程式庫或許多 DLL 中使用 MFC DLL 精靈。 如果您的 DLL 使用 MFC,Visual Studio 支援三種不同的 DLL 開發案例:

  • 建置以靜態方式連結 MFC 的一般 MFC DLL

  • 建置動態連結 MFC 的一般 MFC DLL

  • 建置 MFC 延伸模組 DLL,一律動態連結 MFC

您還想知道關於哪些方面的詳細資訊?

決定要使用的 DLL 種類

如果您的 DLL 不使用 MFC,請使用 Visual Studio 來建置非 MFC Win32 DLL。 將您的 DLL 連結至 MFC(靜態或動態方式)會佔用大量的磁碟空間和記憶體。 除非您的 DLL 實際使用 MFC,否則您不應該連結到 MFC。

如果您的 DLL 將使用 MFC,而且將由 MFC 或非 MFC 應用程式使用,您必須建置一般 MFC DLL,以動態方式連結到 MFC 或靜態連結至 MFC 的一般 MFC DLL。 在大部分情況下,您可能想要使用動態連結至 MFC 的一般 MFC DLL,因為 DLL 的檔案大小會更小,而且使用共用版本的 MFC 節省記憶體可能會相當重要。 如果您以靜態方式連結至 MFC,DLL 的檔案大小將會較大,而且可能會佔用額外的記憶體,因為它會載入自己的 MFC 程式庫程式碼私人複本。

建置動態連結至 MFC 的 DLL 比建置以靜態方式連結 MFC 的 DLL 更快,因為不需要連結 MFC 本身。 在連結器必須壓縮偵錯資訊的偵錯組建中,這特別適用。 藉由連結至已經包含偵錯資訊的 DLL,您的 DLL 內要壓縮的偵錯資訊較少。

動態連結至 MFC 的其中一個缺點是,您必須將共用 DLL Mfcx0.dll 和 Msvcrxx.dll (或類似檔案)散發到您的 DLL。 MFC DLL 可以自由轉散發,但您仍然必須在安裝程式中安裝 DLL。 此外,您必須寄送 Msvcrxx.dll,其中包含程式本身和 MFC DLL 所使用的 C 執行時間程式庫。

如果您的 DLL 只會由 MFC 可執行檔使用,您可以選擇建置一般 MFC DLL 或 MFC 擴充 DLL。 如果您的 DLL 實作衍生自現有 MFC 類別的可重複使用類別,或您需要在應用程式與 DLL 之間傳遞 MFC 衍生的物件,您必須建置 MFC 擴充 DLL。

如果您的 DLL 動態連結至 MFC,MFC DLL 可能會與您的 DLL 一起轉散發。 此架構特別適用于在多個可執行檔之間共用類別庫,以節省磁碟空間並將記憶體使用量降至最低。

您還想知道關於哪些方面的詳細資訊?

另請參閱

在 Visual Studio 中建立 C++ DLL