我想使用C ++ / WinRT为卡在Win 10.0.14393(或1609)上的Lumia开发一个应用程序。我用
创建了一个空白应用项目项目无法编译,并出现以下错误:
错误C2039:'DisconnectUnloadedObject':不是'winrt :: BlankApp2 :: implementation :: MainPageT'的成员
错误C2039:'UnloadObject':不是'winrt :: BlankApp2 :: implementation :: MainPageT'的成员
这是错误还是故意行为?请注意,设置任何新的 min。版本可成功构建。
答案 0 :(得分:0)
我建议您在定位较旧的C ++ / WinRT和Windows 10更新时使用Visual Studio 2015。我的印象是,其中大多数是在Visual Studio 2015之上提供的,其中包含Visual Studio 2015更新,Windows 10 SDK更新和C ++ / WinRT更新。
当将Visual Studio 2015与C ++ / WinRT结合使用时,您将需要最新的更新Update3。检查更新,并确保您的Visual Studio 2015副本具有最新更新。我只是在使用Visual Studio 2015 Enterprise的安装来重新编译可以在Visual Studio 2017上正常运行的程序,发现我缺少包括尚未安装的Update 3中的Win 10 SDK 10.0.14393的工具和SDK。
您还可以从“控制面板”中转到“程序和功能”,在列表中查找Microsoft Visual Studio 2015,然后右键单击并单击“更改”,这将使您可以检查已安装的内容并进行任何更改。
在过去的几个月中,使用C ++ / WinRT,我同时使用了Visual Studio 2017社区版和Visual Studio 2015企业版。
将解决方案从VS 2015迁移到VS 2017时,我看到了差异,这要求我查看解决方案的“属性”页面。另请参见synchronizing SDK with Windows 10 update and using WinRT with Standard C++
中的讨论使用最新的Windows 10更新和VS 2017对我而言最合适,因为我能够针对最近的Windows 10更新。但是我发现,尝试使用VS 2017定位较旧的Windows 10更新可能会有问题。
很抱歉,我不能更具体。 C ++ / WinRT和Windows 10更新的整个领域比我希望的要复杂得多,尽管现在看来似乎已经解决了。
C ++ / WinRT是一个模板库,最初是GitHub上的一个开源项目。我的印象是,微软已经收购了它,现在它已成为标准产品。我认为,随着Visual Studio 2015的出现,C ++ / WinRT会同时进行大量重写,然后Visual Studio 2017转向实现更多的C ++ 17和拟议的C ++ 20标准以及协同程序技术规范。>
这似乎是一个在某种程度上仍在变化的领域。但是,大多数更改是在VS 2015和早期VS 2017以及SDK上进行的。现在,有了最新的更新,它似乎非常可靠。
答案 1 :(得分:0)
最新版本的C ++ / WinRT可以支持Windows 10的所有版本,包括14393和更早的版本。
请记住,C ++ / WinRT既是库又是语言投影。语言投影提供对以给定Windows版本为目标的Windows API的访问。每个版本都引入了新的API。因此,如果要定位Windows的最低版本,则需要确保将自己限制在该Windows版本上可用的API上。但是,我建议使用最新的编译器和最新的Windows SDK,因为它们包含许多错误修复。