【问题标题】:Is Win2D yet available in C++/WinRT?Win2D 在 C++/WinRT 中是否可用?
【发布时间】:2018-08-26 18:50:44
【问题描述】:

我需要在我的 cppwinrt 项目中使用 win2D。使用 Win2D 示例文件作为模型,我试图模仿它的设置,从该项目中放入 win2d 的包文件,复制自定义构建步骤,但我无法编译它。我记得一些关于 Win2D 很快会添加到标准 cppwinrt 头文件中的讨论,以便可以像其他这些精彩的 cppwinrt 接口一样访问它。这是可能很快发生的事情吗?或者是否有人对在当前 Visual Studio 2017 环境中使用 Win2D 有一些非常具体的说明?我在 Insider 预览计划中,但没有看到任何内容。谢谢。

【问题讨论】:

  • cppwinrt 编译器包含在 Windows 10 Insider Preview SDK 中。您可以自己从 Win2D .winmd 文件生成标头。见this post
  • Chuck,我被那篇帖子的这一部分吓到了:“我知道你会问,答案是否定的,今天这不适用于 Win2D,因为 cppwinrt 的版本“Windows SDK 附带的 .exe 存在一个错误。我们的内部版本支持 Win2D 已有一段时间了,我被告知下一个 Windows SDK 将有修复,希望在本月晚些时候。”在任何情况下,这些指令都无法正常运行(首先,“where”命令不会在 10.0.17035.0\x86 目录的当前位置找到 cppwinrt.exe),所以我有点担心会搞砸。
  • 啊,很抱歉没有看到该评论。我相信现在应该在较新的 SDK 中解决它。 VS 2017 的开发人员命令提示符 中的where 对我有用 (C:\Program Files (x86)\Windows Kits\10\bin\10.0.17110.0\x86\cppwinrt.exe),可能是因为我安装了带有新 SDK 集成的 VS 2017(15.7 更新)预览版。
  • 谢谢!我想知道我是否获得了最新的 VS 预览 - 这是一个愚蠢的问题:如何判断正在运行的 VS 的版本?看不到任何明显的东西。我原以为这些预览更新将是自动的。
  • 帮助 -> 关于。预览版的整体生产版本为 15.7.x。现在是 15.6.x 的最新版本。

标签: win2d c++-winrt


【解决方案1】:

一旦您拥有downloaded Win2D 并假设您安装了最新的 RS4 Windows SDK,您可以简单地使用 cppwinrt 生成 Win2D 标头以供使用:

cppwinrt -in lib\uap10.0\Microsoft.Graphics.Canvas.winmd -ref sdk

这将生成一个 winrt 文件夹,其中包含您为了使用 Win2D 而需要包含的头文件。然后,您需要将父文件夹添加到包含路径中,并确保将 Win2D DLL 复制到您的包或构建输出文件夹中。

【讨论】:

  • 肯尼,我想我已经下载了 Win2D - 至少有不止一个 Win2D.uwp.1.21.0。使用上述命令提示符会产生错误 0x80070057:无法解析元数据规范:lib\uwp10.0\Microsoft.Graphics.Canvas.winmd。我在包中有 1.21.0 win2d,因为它在 WIn2D 示例文件中,并且附加包含设置为在 WIn2D 示例中。我很欣赏你上面的建议,但它们是一般性的。有没有什么地方可以找到在此环境中添加 WIn2D 功能的具体详细说明?
  • 确保 winmd 的路径有效,例如相对路径正在从正确的位置解析。该错误消息基本上意味着“找不到文件”。我们应该很快就会为您提供项目模板支持。
  • 项目模板支持!多么棒的消息。我可能会把组合代码留到以后,然后把希望摆在我面前。顺便说一句,我想我有头文件 - 它们已经存在于您的 Win2D 示例中。我只是找不到让我的应用知道它们的方法:#include 找不到它们,尽管我已将它们与其他人一起放在 winrt 目录中。
  • Kenny- 我已经离开了几个月,完成了一个 Mac 应用程序,现在又回到了这个项目。我希望到这个时候,对 c++/winrt 的项目模板支持会出现在 VS 中,但我在 15.9 Preview 2 中看不到它。我错过了它还是它还没有?谢谢。
  • 谢谢 - 当使用 VS 15.9.0 Preview 2.0 打开示例时,我看到“无法加载项目‘PhotoEditor’,因为它缺少安装组件。要修复此启动 Visual Studio 安装程序,请使用以下选项: Microsoft.Windows.CppWinRT”但是即使刚刚下载了最新的 VS 安装程序,我在长长的安装选项列表中也找不到任何提及该组件的内容 - 一定是我遗漏了一些东西(我的经验可能对这个系统的新手会发生什么)。
【解决方案2】:

在最近的更新中,使用 Newget 将 Win2D 安装到 C++/WinRT 项目中会自动生成头文件并安装在“GeneratedFiles\winrt\”中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多