Hello, thank you for your meta xr plugin. I am using version 5.6 binary, and the official interaction SDK is not working. When I use the files you provided, I receive the message: “The following modules are missing or built with a different engine version:OculusInteractionOculusInteractionPrebuiltsOculusInteractionEditorIsdkDataSourcesMetaXRIsdkDataSourcesOpenXRWould you like to rebuild them now?” If I choose ‘yes’, it shows “could not be compiled. Try rebuilding from source manually.” I don’t know what the reason is. I hope to get your response, thank you. The file path for my interaction SDK is my project/plugins/MetaXRInteraction, and the version I downloaded is as shown in the picture.
I just tested it and it work but here what you have to do.
Assuming you are creating a new VR project with the Unreal VR template.
After you create the project and Enabled the MetaXR plugin, go and create a new Empty C++ class in the editor.
Close the editor.
Open the created .SLN project in Visual Studio and compile it.
CLose Visual Studio.
Create a Plugins folder inside your project folder and copy “MetaXRInteraction” inside the Plugins folder.
Open the Unreal Project ,when ask to compile the new plugin click yes. This time it will compile without any issue.
Thank you for your reply. I tried the method you suggested, but when I reached the step of opening the created .SLN project in Visual Studio and compiling it, I encountered the error:
MSB3073: The command “…\Build.bat ttEditor Win64 Development -Project="D:\Desktop\tt\tt.uproject" …” exited with code 8
.
I consulted ChatGPT but still could not resolve the issue, and I am unsure of the cause. I would appreciate it if you could provide guidance when you have time.
You may be trying to compile the Editor which is not gonna happen.
Thank you very much for your advice, I understand the problem
Thank you @TrueFranco for the plugin. I built the plugin from source (put the source code in my projects plugin folder) which works fine. Packaging for Development works fine too. But as soon as I package my project for Shipment I get a Linker error in Unreals Task.h
.
UATHelper: Packaging (Android (ASTC)): ld.lld: error: undefined symbol: LowLevelTasks::FTask::ActiveTask
UATHelper: Packaging (Android (ASTC)): >>> referenced by Task.h:371 (Runtime/Core/Public/Async/Fundamental/Task.h:371)
UATHelper: Packaging (Android (ASTC)): >>> I:/Projekte/Immerzed-Repo/VRTW/Plugins/MetaXR/Intermediate/Build/Android/a/UnrealGame/Shipping/MRUtilityKit/Module.MRUtilityKit.4.cpp.o:(UE::Tasks::Private::TTaskWithResult<TTuple<TArray<FMRUKMeshSegment, TSizedDefaultAllocator<32>>, FMRUKMeshSegment>>::TTaskWithResult(char16_t const*, LowLevelTasks::ETaskPriority, UE::Tasks::EExtendedTaskPriority, unsigned int, UE::Tasks::ETaskFlags))
UATHelper: Packaging (Android (ASTC)): >>> referenced by Task.h:371 (Runtime/Core/Public/Async/Fundamental/Task.h:371)
UATHelper: Packaging (Android (ASTC)): >>> I:/Projekte/Immerzed-Repo/VRTW/Plugins/MetaXR/Intermediate/Build/Android/a/UnrealGame/Shipping/MRUtilityKit/Module.MRUtilityKit.4.cpp.o:(UE::Tasks::Private::TTaskWithResult<TTuple<TArray<FMRUKMeshSegment, TSizedDefaultAllocator<32>>, FMRUKMeshSegment>>::TTaskWithResult(char16_t const*, LowLevelTasks::ETaskPriority, UE::Tasks::EExtendedTaskPriority, unsigned int, UE::Tasks::ETaskFlags))
UATHelper: Packaging (Android (ASTC)): >>> referenced by Task.h:371 (Runtime/Core/Public/Async/Fundamental/Task.h:371)
UATHelper: Packaging (Android (ASTC)): >>> I:/Projekte/Immerzed-Repo/VRTW/Plugins/MetaXR/Intermediate/Build/Android/a/UnrealGame/Shipping/MRUtilityKit/Module.MRUtilityKit.4.cpp.o:(UE::Tasks::Private::TTaskWithResult<TTuple<TArray<FMRUKMeshSegment, TSizedDefaultAllocator<32>>, FMRUKMeshSegment>>::TTaskWithResult(char16_t const*, LowLevelTasks::ETaskPriority, UE::Tasks::EExtendedTaskPriority, unsigned int, UE::Tasks::ETaskFlags))
UATHelper: Packaging (Android (ASTC)): >>> referenced 173 more times
PackagingResults: Error: undefined symbol: LowLevelTasks::FTask::ActiveTask
Can you reproduce this on your side?
Some info:
UE 5.6.1
NDK: 27.3.13750724
SDK and NDK API Level: android-34
Java: JDK 21.0.3
Only difference I see is the NDK and Java version. I use NDK version 27.2.12479018 and Java 17.0.6.
Try that.
Also for the MRutility Kit make sure you enable Scene Support.
Mixed Reality Utility Kit Getting Started | Meta Horizon OS Developers
I don’t need the Utility Kit. But the linker error appears everywhere where the TTasks are used. And that are a lot more places.
I tried this NDK and Java Version before. I will try the prebuilt binaries later. You built the Engine from Source, right? I use the Epic Store Version.
I made the binaries with the engine source of course for the Epic Store Version. I can guarantee you the binarie version work since I have tested it a few times with different scenarios.
I can not help too much with the source build because many things can change from your build environment to mine and is really difficult for me to figure it out your particular issue.
That’s the main reason I provide the binaries.
It seems that we solved the problem. I don’t know why it behaved differently in my build environment as described here:
- Pre Compiled Unreal Engine 5.6.1 from Epic Store
- NDK: 27.3.13750724
- SDK and NDK API Level: android-34
- Java: JDK 21.0.3
- The Plugin was used as a project plugin (not in the marketplace folder)
What I tried without success:
- Changing NDK and JDK as you recommended
- Using the prebuild binaries
The same linker error happened for the plugin in a completely new project with the VR Template.
Two things actually helped in the clean new project and in the existing one:
- Putting the Plugin in the Marketplace Folder of the Engine. After that the linker error was also thrown in other plugins, e.g. the Pico XR Plugin. So this did not help in the end but might explain why you did not get the same errors as me.
- Keeping the Plugin as a Project Plugin and changing the NDK to r26b (26.1.10909125). This was our final solution.
It seems to me that there is a general problem with asynchronous tasks in project plugins. Everything that trys to access LowLevelTasks::FTask::ActiveTask
in Scheduler.cpp
in a shipment build provokes that linker error when using another ndk than explained in 2.