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

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

本文关键字:14393 目标 windows C++ WinRT 是否      更新时间:2023-10-16

我想用C++/WinRT为我的Lumia制作一个应用程序,它卡在Win 10.0.14393(或1609(上。我用创建了一个空白应用程序项目

  • 目标平台版本:10.0.17134.0和
  • 目标平台最低版本:10.0.14393

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

错误C2039:"DisconnectUnloadedObject":不是"winrt::BlankApp2::implementation::MainPageT"的成员

错误C2039:"UnloadObject":不是"winrt::BlankApp2::implementation::MainPageT"的成员

这是错误还是故意行为?请注意,设置任何更新的分钟。版本导致成功构建。

最新版本的C++/WinRT可以支持所有版本的Windows 10,包括14393和旧版本。

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

我建议您在针对较旧的C++/WinRT和Windows 10更新时使用Visual Studio 2015。我的印象是,其中大多数都是在Visual Studio 2015的基础上提供的,包括Visual Studio 2015更新、Windows 10 SDK更新和C++/WinRT更新。

将Visual Studio 2015与C++/WinRT一起使用时,您将需要最新的更新,即更新3。检查更新,并确保您的Visual Studio 2015副本具有最新的更新。我刚刚安装了Visual Studio 2015 Enterprise,重新编译了一些用Visual Studio 2017编译得很好的东西,发现我缺少了更新3中的工具和SDK,包括Win 10 SDK 10.0.14393,但我还没有安装。

您也可以从"控制面板"中转到"程序和功能",在列表中查找Microsoft Visual Studio 2015,然后用鼠标右键单击"更改",即可检查已安装的内容并更改任何内容。

在过去的几个月里,我使用了C++/WinRT,同时使用了Visual Studio 2017社区版和Visual Studio 2015企业版。

在将解决方案从VS 2015移动到VS 2017时,我看到了差异,这需要我查看解决方案的"属性"页。另请参阅将SDK与Windows 10更新同步以及将WinRT与标准C++一起使用的讨论

使用最新的Windows 10更新和VS 2017最适合我,因为我能够针对最新的Windows10更新。然而,我发现尝试使用VS 2017针对较旧的Windows 10更新可能会有问题。

很抱歉,我不能更具体了。C++/WinRT和Windows 10更新的整个领域比我想象的要牛仔得多,尽管现在似乎已经"安定下来"了。

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

在某种程度上,这一领域似乎仍在发生变化。然而,大多数变化都发生在VS 2015和VS 2017早期以及SDK上。随着最新的更新,它现在看起来相当稳定。