是否可以使用 C++/WinRT 将 windows 10.0.14393 作为目标?

Is it possible to target windows 10.0.14393 with C++/WinRT?

我想使用 C++/WinRT 为卡在 Win 10.0.14393(或 1609)上的 Lumia 制作一个应用程序。我用

创建了一个 空白应用程序 项目

项目编译失败,出现以下错误:

error C2039: 'DisconnectUnloadedObject': is not a member of 'winrt::BlankApp2::implementation::MainPageT'

error C2039: 'UnloadObject': is not a member of 'winrt::BlankApp2::implementation::MainPageT'

这是错误还是故意行为?请注意,设置任何较新的 min。版本 生成成功。

我建议您在针对较旧的 C++/WinRT 和 Windows 10 个更新时使用 Visual Studio 2015。我的印象是,其中大部分是在 Visual Studio 2015 年之后交付的,有 Visual Studio 2015 年更新和 Windows 10 个 SDK 更新和 C++/WinRT 更新。

将 Visual Studio 2015 与 C++/WinRT 一起使用时,您将需要最新的更新 Update 3。检查更新并确保您的 Visual Studio 2015 副本具有最新更新。我只是使用 Visual Studio 2015 Enterprise 的安装来重新编译一些可以用 Visual Studio 2017 正常编译的东西,发现我缺少工具和 SDK,包括 Update 3 中的 Win 10 SDK 10.0.14393我还没有安装。

您还可以从“控制面板”中转到“程序和功能”,在列表中查找 Microsoft Visual Studio 2015,然后单击鼠标右键并单击“更改”,这样您就可以检查已安装的内容并进行更改任何东西。

在过去的几个月里,我使用了 C++/WinRT,我使用了 Visual Studio 2017 Community Edition 和 Visual Studio 2015 Enterprise Edition。

我在将解决方案从 VS 2015 移动到 VS 2017 时看到了差异,这需要我查看解决方案的“属性”页面。另请参阅

中的讨论

使用最新的 Windows 10 个更新和 VS 2017 最适合我,因为我能够针对最近的 Windows 10 个更新。但是我发现尝试使用 VS 2017 定位较早的 Windows 10 个更新可能会出现问题。

很抱歉我不能说得更具体。 C++/WinRT 的整个领域和 Windows 10 个更新比我想要的要多得多,尽管它现在似乎正在稳定下来。

C++/WinRT是一个模板库,最初是GitHub上的一个开源项目。我的印象是微软已经收购了它,它现在是一个标准的产品供应。我相信,随着 Visual Studio 2015 和 Visual Studio 2017 开始实施更多的 C++17 并提出 C++20 标准和技术协程规范。

这似乎是一个在某种程度上仍在变化的领域。然而,大部分变化发生在 VS 2015 和早期的 VS 2017 以及 SDK 中。最新的更新似乎已经很稳定了。

最新版本的C++/WinRT可以支持Windows10的所有版本,包括14393及更早的版本。

请记住,C++/WinRT 既是库又是语言投影。语言投影提供对 Windows API 的访问,这些 API 以给定的 Windows 版本为目标。每个版本都引入了新的 API。因此,如果您想要以 Windows 的最低版本为目标,您需要确保将自己限制在该 Windows 版本上可用的 API。不过,我建议使用最新的编译器和最新的 Windows SDK,因为它们包含许多错误修复。