靜態程式庫 (C++/CX)
在 通用 Windows 平台 (UWP) 應用程式中使用的靜態連結庫可以包含 ISO 標準C++程式代碼,包括 STL 類型,以及呼叫未從 Windows 執行階段 應用程式平臺排除的 Win32 API。 靜態庫會取用 Windows 執行階段元件,而且可能會建立具有特定限制的 Windows 執行階段元件。
建立靜態程式庫
建立新專案的指示會根據您已安裝的Visual Studio版本而有所不同。 若要查看您慣用 Visual Studio 版本的文件,請使用版本選取器控制項。 其位於此頁面目錄頂端。
在 Visual Studio 中建立 UWP 靜態庫
在功能表列上,選擇 [檔案]>[新增]>[專案],以開啟 [建立新專案] 對話方塊。
在對話框頂端,將 [語言] 設定為 [C++]、將 [平臺] 設定為 [Windows],並將 [專案類型] 設定為 UWP。
從篩選的項目類型清單中,選擇 [靜態庫] (通用 Windows - C++/CX), 然後選擇 [ 下一步]。 在下一頁中,為專案指定名稱,並視需要指定專案位置。
選擇 [建立] 按鈕以建立專案。
在 Visual Studio 2017 或 Visual Studio 2015 中建立 UWP 靜態庫
在功能表列上,選擇 [檔案]>[新增]>[專案]。 在 [Visual C++>Windows 通用] 下,選擇 [靜態庫] [通用 Windows]。
在 [ 方案總管] 中,開啟專案的捷徑功能表,然後選擇 [ 屬性]。 在 [屬性] 對話框的 [組態屬性>C/C++] 頁面上,將 [取用 Windows 執行階段 擴充功能] 設定為 [是] (/ZW)。
當您編譯新的靜態庫時,如果您呼叫 UWP 應用程式排除的 Win32 API,編譯程式將會引發錯誤 C3861:「找不到識別符」。若要尋找支援 Windows 執行階段 的替代方法,請參閱 UWP 應用程式中的 Windows API 替代方案。
如果您將C++靜態庫專案新增至 UWP 應用程式方案,您可能必須更新連結庫專案的屬性設定,讓 UWP 支援屬性設定為 [是]。 如果沒有此設定,程式代碼會建置和連結,但當您嘗試驗證Microsoft市集的應用程式時,就會發生錯誤。 靜態程式庫必須以使用它的專案相同的編譯器設定進行編譯。
如果您使用會建立公用 ref
類別、公用介面類別或公用實值類別的靜態程式庫,連結器將會引發下列警告:
警告LNK4264:將以 /ZW 編譯的物件檔案封存到靜態庫;請注意,撰寫 Windows 執行階段 類型時,不建議連結至包含 Windows 執行階段 元數據的靜態庫。
只有當靜態庫未在連結庫本身外部取用 Windows 執行階段 元件時,您才能安全地忽略警告。 如果連結庫未取用它所定義的元件,則即使公用元數據包含類型資訊,連結器仍可將實作優化。 這表示靜態程式庫中的公用元件會進行編譯,但不會在執行階段啟動。 基於這個理由,任何要供其他元件或應用程式取用的 Windows 執行階段元件,都必須在動態連結庫 (DLL) 中實作。