Я пытаюсь создать собственное приложение 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-MixedReality, но не когда я пытаюсь реализовать это в другом проекте. Что мне не хватает? Я предполагаю, что XrSceneLib, возможно, не был разработан для внешнего использования в других проектах, но в то же время я думаю, что это каким-то образом должно быть возможно.
Я также пытался добавить дополнительные каталоги библиотек и отсутствующие объектные файлы, но либо я сделал что-то не так, либо это просто не работает.
Я очень ценю любую помощь.
Я добавил общую папку и папку openxr_preview из примера решения в новое решение и вручную добавил дополнительные каталоги включения для XrSceneLib_uwp, SampleShared_uwp, pbr_uwp и Gltf-uwp, после чего это решение может быть успешно создано. Поскольку этот процесс трудоемок и его легко пропустить, рекомендуется создавать проект непосредственно в образце решения. Мы проведем дополнительные тесты и будем держать вас в курсе, когда будут какие-либо обновления.
Я думаю, что компоновщик не может найти загрузчик OpenXR. Примеры проектов в репозитории microsoft/OpenXR-MixedReality
github ссылаются на загрузчик OpenXR с помощью диспетчера пакетов NuGet. Я получаю ту же ошибку компоновщика, если намеренно удаляю ссылки на пакеты NuGet из примеров проектов.
Вы можете связать загрузчик OpenXR с помощью NuGet или создать загрузчик OpenXR самостоятельно. Взгляните на раздел «Использование OpenXR в существующем проекте» на сайте Microsoft:
Спасибо за Ваш ответ. Да, именно это и то, что упомянул @Zuocheng Wang - MSFT, вызвало мои проблемы. Когда я добавил в свой основной проект дополнительные проекты, от которых зависит XrSceneLib_uwp, а также OpenXR.Loader, все заработало.
Пожалуйста, публикуйте свои «ошибки связывания» в виде цитируемого текста, а не изображения.