VS 2017和2019找不到WinRT头文件,即使在新的解决方案上也是如此



因此,我尝试使用";Windows应用程序打包项目";,我遇到了文件系统问题,这是我所预料到的,并且正在努力解决这些问题。为了做到这一点,我需要访问WinRT库,这样我就可以处理UWP路径来获取我的资产和资源。

我安装了C++/WinRTVSIX扩展,并将NuGet包添加到我的解决方案中。我从我读到的内容中假设,这将是我访问头文件所需要做的全部工作然而,编译器显然找不到WinRT的头文件及其命名空间,因为我收到消息说cannot open source file "winrt/Windows.Storage.h和我不能使用Windows::Storage::StorageFolder调用,我显然需要这些调用才能使我的文件系统代码正常工作。尽管我尽了最大努力找出我遗漏的路径,但什么都没用,所以我尝试了一种不同的策略。

在相同的解决方案中;DirectX 12应用程序(通用Windows(";我认为我可能走错了路,选择了看看是否可以在没有传统win32的情况下将我的前端重新实现为一个直接的UWP应用程序。这个新项目似乎拥有正确的include,因为using指令适用于它使用的Windows.*名称空间,并且它进行编译。尽管如此,我还是无法弄清楚它在做什么来获得与我需要的类似的访问命名空间,所以我无法对它进行反向工程以使我的原始项目正常工作。然而,我怀疑这是否使用了相同的库,因为在我安装C++/WinRT VSIX扩展之前,这种项目类型就已经可用了,而WinRT在任何地方都没有提及。

为了回到基础,我创建了一个新的解决方案;Windows桌面应用程序(C++/WinRT(";正如我所知,这使用了我所追求的运行时,它应该是干净的(与我长期使用的具有大量项目和配置的解决方案相反(,这样我就可以看到它为我复制和访问所需工具所使用的选项。然而,新创建的项目将不会编译,它引用了与我的原始解决方案和项目完全相同的原因,即无法找到WinRT标头。这让我很困惑,所以我认为这是我在全球范围内对VS2017进行的其他配置。

为了隔离这一点,我安装了VS2019并添加了扩展,心想";新环境,没有配置错误";。但再一次;Windows桌面应用程序(C++/WinRT(";项目将无法生成,并且找不到头文件。

自动生成的pch.h包含以下

//it can't find anything starting with "winrt/"
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.System.h>
#include <winrt/Windows.UI.Xaml.h>
#include <winrt/Windows.UI.Xaml.Controls.h>
#include <winrt/Windows.UI.Xaml.Hosting.h>
#include <winrt/Windows.UI.Xaml.Media.h>
//but it finds this one totally fine
#include <Windows.UI.Xaml.Hosting.DesktopWindowXamlSource.h>

因此,这在新旧解决方案文件以及VS2017和VS2019中都会发生。我正式被正在发生的事情难住了。

有人能告诉我我缺少了什么吗,这样我就可以构建我的win32应用程序或新创建的WinRT项目了?

此问题已由https://github.com/microsoft/cppwinrt/pull/781更新您的MSIX和NuGet包

您必须添加对安装在某处的windows.winmd的引用

C: \Program Files(x86(\Windows Kits\10\UnionMetadata\Windows.winmd

或在vs目录中的某个位置,通过浏览参考窗口然后

您可以使用";使用Windows.Storage";包括必要的东西我不确定,但我有一个winform应用程序,我在其中使用了这个,它运行得很好,所以也许你可以试试

我得到了相同的错误消息,我通过添加解决了这个错误消息

%WindowsSdkDir%Include\WindowsTargetPlatformVersion\cppwinrt到include路径,或者只使用include语句构建解决方案,该语句还生成头并使winrt命名空间工作。

%WindowsSdkDir%可以通过从菜单工具、命令行打开开发人员命令提示符并键入echo%WindowsSbkDir%、来获得

可以从配置属性复制windowsTargetPlatformVersion-Windows SDK版本

在这一环节进行了解释

https://learn.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/get-started#important-api

相关内容

最新更新