我是通用Windows平台的C ++编程新手,我有一个简单的问题:我在Visual Studio 2015中创建了一个静态库(通用Windows)的项目但我无法在该项目中使用Windows::UI::Core::CoreWindow
等Windows运行时类。
我想我需要添加include指令或对库的引用,但我无法找到有关它的信息。我尝试搜索MSDN,但只找到了两个页面,其中提到了名称空间default和Collections的两个标题。
有人知道如何在静态库中引用Windows运行时类吗?
答案 0 :(得分:3)
您需要使用/ ZW选项构建项目,以允许在UWP静态库中使用Windows运行时扩展:
应用此选项后,对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中。