首页 > 解决方案 > 无法访问 CMake UPW 项目中的文件系统

问题描述

我构建了一个应用程序,它使用 OpenXR 和 DirectX 在 VR 中显示一个简单的场景。由于我的任务是在现有项目中实现此功能,因此它是使用 CMake 构建的,与 Visual Studio 2019 完美配合。

该应用程序可以在 Windows MR Portal 以及带有 Oculus OpenXR 运行时的 Oculus Rift S 上毫无问题地运行。

现在下一步是让它在全息透镜上运行。由于我需要一个 UWP 项目来执行此操作,因此我为要使用 CMake 在 hololens 上运行的应用程序创建了一个 .sln,如下所示:

cmake -G "Visual Studio 16 2019" -A x64 ..\.. -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0

有了这个,我可以打开项目并将其编译为 UWP,没有任何问题。现在,当我想运行应用程序来调试它时,我收到以下错误:

Exception thrown at 0x00007FFD3CC83E49 in openxr_test_app.exe: Microsoft C++ exception: std::filesystem::filesystem_error at memory location 0x00000046791CCF50.
Error [GENERAL |  | OpenXR-Loader] : Unknown failure: canonical: Access denied: "C:\WINDOWS\system32\MixedRealityRuntime.json"

经过一番谷歌搜索,我发现我可能需要将相关功能添加到Package.appxmanifest,所以我添加了

<rescap:Capability Name="broadFileSystemAccess"/>

xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"

IgnorableNamespaces="uap mp rescap"

在 Windows 设置面板中为我Package.appxmanifest的应用程序启用文件系统访问权限。

但是,我仍然收到上述错误,我还尝试访问我 PC 上的其他文件(因为我认为 system32 可能会受到更多限制),但没有成功。

我特别困惑,因为 Microsoft 的OpenXR 示例应用程序没有任何问题,而且他们没有声明该broadFileSystemAccess功能。

有没有其他方法可以允许文件访问,或者我只是缺少一些我需要启用的东西?

标签: c++cmakeuwpopenxr

解决方案


因此,作为快速跟进,如果有人遇到同样的问题:这里的问题是 OpenXR 加载程序中的一个错误,该错误是在 OpenXR 版本 1.0.10 中引入的。更新到 OpenXR 1.0.11 解决了加载程序无法访问MixedRealityRuntime.json文件的问题。


推荐阅读