如何在静态库中引用Windows运行时类?

时间:2016-06-11 07:05:04

标签: c++ win-universal-app

我是通用Windows平台的C ++编程新手,我有一个简单的问题:我在Visual Studio 2015中创建了一个静态库(通用Windows)的项目但我无法在该项目中使用Windows::UI::Core::CoreWindow等Windows运行时类。

我想我需要添加include指令或对库的引用,但我无法找到有关它的信息。我尝试搜索MSDN,但只找到了两个页面,其中提到了名称空间defaultCollections的两个标题。

有人知道如何在静态库中引用Windows运行时类吗?

1 个答案:

答案 0 :(得分:3)

您需要使用/ ZW选项构建项目,以允许在UWP静态库中使用Windows运行时扩展:

  1. 右键单击解决方案资源管理器中的项目
  2. 单击“属性”
  3. 选择C / C ++ - >一般
  4. 将“使用Windows运行时扩展”设置为“是(/ ZW)”
  5. 点击确定
  6. 应用此选项后,对Windows Runtime Extensions的引用将显示在项目的引用下,您可以使用Windows运行时类。

    但是,在构建库时可能会看到链接器警告:

      

    Debug \ pch.obj:警告LNK4264:使用编译的归档目标文件   / ZW成静态库;请注意,在创作Windows Runtime时   类型不建议与静态库链接   如果您使用的是发布的链接器,则包含Windows运行时元数据   在VS 2015 Update 2之前

    我测试了这个场景,它在调试模式下运行良好,但是,我不确定它是否是最好的方法,因为/ ZW选项默认情况下是关闭的,与其他类型的UWP项目不同。

    MSDN

      

    您可以在UWP项目中使用本机C ++静态库,但在那里   是一些需要注意的限制和限制。从阅读开始   关于C ++ / CX中静态库的这个主题。您可以访问本机   您的UWP应用程序中的静态库中的代码,但事实并非如此   建议在这样的静态库中创建公共引用类型。如果   使用/ ZW选项(库管理程序)编译静态库   (实际上伪装的链接器)警告:

    也许您应该考虑将所有代码包装在Windows运行时组件或UWP DLL中。