Использование XrSceneLib_uwp в собственном приложении HoloLens 2 OpenXR

Я пытаюсь создать собственное приложение HoloLens 2 C++ с помощью OpenXR. В примере Microsoft OpenXR-MixedReality я обнаружил проект XrSceneLib_uwp, для которого тип конфигурации установлен как статическая библиотека (.lib) в свойствах Visual Studio. Соответственно, я попытался добавить его в качестве библиотеки в свое решение, в котором также есть основное приложение (C++/WinRT), в котором я хочу использовать функции из XrSceneLib_uwp. На мой взгляд, это имеет смысл, потому что я могу использовать библиотеку, например, для создания голографической титульной сцены без особых усилий. Проблема здесь в том, что когда я создаю свое решение, я получаю ошибки компоновщика, и я не знаю, как их исправить. Я также относительно новичок в Visual Studio (в моем случае 22), и, скорее всего, я просто делаю что-то неправильно в процессе связывания.

Ошибка компоновщика при попытке сборки:

Ошибка LNK2019: неразрешенный внешний символ xrGetInstanceProcAddr, указанный в функции "public: __cdecl `anonymous namespace'::ImplementXrApp::ImplementXrApp(struct engine::XrAppConfiguration)" (??0ImplementXrApp@?A0x934f03db@@QEAA@UXrAppConfiguration@engine@@@Z) CoreApp3 \repos\CoreApp3\CoreApp3\XrSceneLib_uwp.lib(XrApp.obj) 1

Мой обозреватель решений

Вот что я делаю:

  • Я копирую и вставляю общие папки и папки openxr_preview из ZIP-файла OpenXR-MixedReality в папку моего проекта.
  • Добавьте XrSceneLib_uwp.vcxproj в /shared/XrSceneLib в качестве существующего проекта в мое решение.
  • Добавьте путь к скопированным общим папкам и папкам openxr_preview в Свойства->Свойства конфигурации->C/C++->Общие->Дополнительные каталоги включения.
  • Добавьте также путь к XrSceneLib_uwp.vcxproj в Дополнительные каталоги включения в моем основном проекте (CoreApp).
  • Добавьте ссылку в CoreApp на XrSceneLib_uwp (Добавить->Ссылка->Проекты).

После этого все работает нормально, и я даже могу построить решение. Но когда я пытаюсь использовать библиотеку, я получаю эти ошибки компоновщика. Я не понимаю, почему это работает в примерах OpenXR-MixedReality, но не когда я пытаюсь реализовать это в другом проекте. Что мне не хватает? Я предполагаю, что XrSceneLib, возможно, не был разработан для внешнего использования в других проектах, но в то же время я думаю, что это каким-то образом должно быть возможно.

Я также пытался добавить дополнительные каталоги библиотек и отсутствующие объектные файлы, но либо я сделал что-то не так, либо это просто не работает.

Я очень ценю любую помощь.

Пожалуйста, публикуйте свои «ошибки связывания» в виде цитируемого текста, а не изображения.

Adrian Mole 05.12.2022 16:24

Я добавил общую папку и папку openxr_preview из примера решения в новое решение и вручную добавил дополнительные каталоги включения для XrSceneLib_uwp, SampleShared_uwp, pbr_uwp и Gltf-uwp, после чего это решение может быть успешно создано. Поскольку этот процесс трудоемок и его легко пропустить, рекомендуется создавать проект непосредственно в образце решения. Мы проведем дополнительные тесты и будем держать вас в курсе, когда будут какие-либо обновления.

Zuocheng Wang - MSFT 09.12.2022 10:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
128
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что компоновщик не может найти загрузчик OpenXR. Примеры проектов в репозитории microsoft/OpenXR-MixedReality github ссылаются на загрузчик OpenXR с помощью диспетчера пакетов NuGet. Я получаю ту же ошибку компоновщика, если намеренно удаляю ссылки на пакеты NuGet из примеров проектов.

Вы можете связать загрузчик OpenXR с помощью NuGet или создать загрузчик OpenXR самостоятельно. Взгляните на раздел «Использование OpenXR в существующем проекте» на сайте Microsoft:

https://learn.microsoft.com/en-us/windows/mixed-reality/develop/native/openxr-getting-started#using-openxr-in-an-existing-project

Спасибо за Ваш ответ. Да, именно это и то, что упомянул @Zuocheng Wang - MSFT, вызвало мои проблемы. Когда я добавил в свой основной проект дополнительные проекты, от которых зависит XrSceneLib_uwp, а также OpenXR.Loader, все заработало.

Jacky098 15.12.2022 13:31

Другие вопросы по теме