DLL (C++/CX)

您可以使用 Visual Studio 來建立標準 Win32 DLL 或Windows 執行階段元件 DLL,這些 DLL 可由 通用 Windows 平臺 (UWP) 應用程式取用。 使用 Visual Studio 版本或早于 Visual Studio 2012 的 Microsoft C++ 編譯器所建立的標準 DLL,可能無法在 UWP 應用程式中正確載入,而且可能無法在 Microsoft Store 中通過應用程式驗證測試。

Windows 執行階段元件 DLL

在幾乎所有情況下,當您想要建立 DLL 以用於 UWP app 時,請使用該名稱的專案範本,將其建立為Windows 執行階段元件。 您可以為具有公用或私人Windows 執行階段類型的 DLL 建立Windows 執行階段元件專案。 您可以從任何Windows 執行階段相容語言撰寫的應用程式存取Windows 執行階段元件。 根據預設,Windows 執行階段元件專案的編譯器設定會使用 /ZW 參數。 .winmd 檔案必須具有根命名空間的相同名稱。 例如,名為 A.B.C.MyClass 的類別必須在名為 A.winmd、A.B.winmd 或 A.B.C.winmd 的中繼資料檔案中定義,才能執行個體化。 DLL 的名稱不需符合 .winmd 檔案名稱。

如需詳細資訊,請參閱 在 C++ 中建立 Windows 執行階段元件

若要在專案中參考協力廠商Windows 執行階段元件二進位檔

  1. 針對將要使用 DLL 的專案開啟捷徑功能表,然後選擇 [ 屬性]。 在 [ 一般屬性 ] 頁面上,選擇 [ 加入新參考 ] 按鈕。

  2. Windows 執行階段元件包含 DLL 檔案和包含中繼資料的 .winmd 檔案。 這些檔案通常位於相同的資料夾中。 在 [ 加入參考 ] 對話方塊的左窗格中選擇 [ 瀏覽 ] 按鈕,然後巡覽至 DLL 及其 .winmd 檔案的所在位置。 如需詳細資訊,請參閱 擴充功能 SDK。

標準 DLL

您可以為 C++ 程式碼建立標準 DLL,其不會取用或產生公用Windows 執行階段類型,並從 UWP 應用程式取用它。 當您只想移轉現有的 DLL 以在此版本的 Visual Studio 中編譯,但不要將程式碼轉換成Windows 執行階段元件專案時,請使用 Dynamic-Link 程式庫 (DLL) 專案類型。 當您進行下列步驟時,這個 DLL 將會隨 .appx 封裝中的應用程式可執行檔一起部署。

在 Visual Studio 中建立標準 DLL

  1. 在功能表列上,選擇 [ 檔案]、 [新增 ]、 [專案 ],然後選取 [動態連結程式庫][DLL] 範本。

  2. 輸入專案的名稱,然後選擇 [ 確定 ] 按鈕。

  3. 新增程式碼。 請確定為您要匯出的函式使用 __declspec(dllexport) ,例如 __declspec(dllexport) Add(int I, in j);

  4. 新增 #include winapifamily.h 以包含適用于 UWP app 的 Windows SDK 標頭檔,並設定宏 WINAPI_FAMILY=WINAPI_PARTITION_APP

若要從相同的方案參考標準 DLL 專案

  1. 針對將要使用 DLL 的專案開啟捷徑功能表,然後選擇 [ 屬性]。 在 [ 一般屬性 ] 頁面上,選擇 [ 加入新參考 ] 按鈕。

  2. 在左窗格中選取 [ 方案],然後在右窗格中選取適當的核取方塊。

  3. 在您的原始程式碼檔中,視需要為 DLL 標頭檔新增 #include 陳述式。

若要參考標準 DLL 二進位檔

  1. 將 DLL 檔、.lib 檔和標頭檔複製並貼至已知位置,例如您目前的專案資料夾。

  2. 針對將要使用 DLL 的專案開啟捷徑功能表,然後選擇 [ 屬性]。 在 [ 組態屬性]、[ 連結器]、[ 輸入 ] 頁面上,將 .lib 檔新增為相依性。

  3. 在您的原始程式碼檔中,視需要為 DLL 標頭檔新增 #include 陳述式。

若要移轉現有的 Win32 DLL 以取得 UWP 應用程式相容性

  1. 建立 DLL (通用 Windows) 類型的專案,並將現有的原始程式碼新增至其中。

  2. 新增 #include winapifamily.h 以包含適用于 UWP app 的 Windows SDK 標頭檔,並設定宏 WINAPI_FAMILY=WINAPI_PARTITION_APP

  3. 在您的原始程式碼檔中,視需要為 DLL 標頭檔新增 #include 陳述式。