静态库 (C++/CX)

通用 Windows 平台 (UWP) 应用中使用的静态库可包含符合 ISO 标准的 C++ 代码(包括 STL 类型),同时还调用 Windows 运行时应用平台中未排除的 Win32 API。 静态库使用 Windows 运行时组件,而且可以在一些限制下创建 Windows 运行时组件。

创建静态库

创建新项目的说明因安装的 Visual Studio 版本而异。 若要查看 Visual Studio 首选项的文档,请使用“版本”选择器控件。 它位于此页面上目录表的顶部。

在 Visual Studio 中创建 UWP 静态库

  1. 在菜单栏上,选择“文件”>“新建”>“项目”,打开“创建新项目”对话框

  2. 在对话框顶部,将“语言”设置为“C++”,将“平台”设置为“Windows”,并将“项目类型”设置为“UWP”

  3. 从项目类型的筛选列表中,选择“静态库 (通用 Windows - C++/CX)”,然后选择“下一步”。 在下一页中,为项目命名,并根据需要指定项目位置。

  4. 选择“创建”按钮创建项目。

在 Visual Studio 2017 或 Visual Studio 2015 中创建 UWP 静态库

  1. 在菜单栏上,依次选择“文件”>“新建”>“项目”。 在“Visual C++”>“通用 Windows”下,选择“静态库(通用 Windows)”

  2. 在“解决方案资源管理器” 中,打开项目的快捷菜单,然后选择“属性” 。 在“配置属性”>“C/C++”页上的“属性”对话框中,将“使用 Windows 运行时扩展”设置为“是(/ZW)”

当你编译新的静态库时,如果调用 UWP 应用排除的 Win32 API,编译器将引发错误 C3861“找不到标识符”。若要查找 Windows 运行时所支持的替代方法,请参阅 UWP 应用中的 Windows API 的替代方法

如果将 C++ 静态库项目添加到 UWP 应用解决方案,可能必须更新该库项目的属性设置,以便将 UWP 支持属性设置为“是”。 如果没有此设置,代码也能生成和链接,但是当你尝试为 Microsoft Store 验证该应用时,会发生错误。 编译静态库时的编译器设置应与使用该库的项目的编译器设置相同。

如果使用创建公共 ref 类、公共接口类或公共值类的静态库,则链接器会引发此警告:

警告 LNK4264:正在将使用 /ZW 编译的对象文件归档到静态库中;请注意,创作 Windows 运行时类型时,建议不要与包含 Windows 运行时元数据的静态库链接。

仅当静态库不生成在库自身之外被使用的 Windows 运行时组件时,才能放心地忽略此警告。 如果该库不使用其定义的组件,则链接器可通过优化去除实现,即使公共元数据包含类型信息,情况也不例外。 这意味着,静态库中的公共组件将进行编译,但不会在运行时激活。 因此,供其他组件或应用使用的任何 Windows 运行时组件都必须以动态链接库 (DLL) 的形式实现。

另请参阅

线程处理和封送处理