Linker error when building "Virtual Reality - Fully Immersive Space"

Hi,

After hitting significant blocking issues with Mixed Reality apps, I’m trying to explore Fully Immersive instead, but I’m hitting linker errors.

Steps:

  • Created a project from scratch in 2022.3.12f
  • Added com.unity.polyspatial (0.5.0)
  • Added com.unity.xr.visionos (0.5.0)
  • Added com.unity.polyspatial.visionos (0.5.0)
  • Added com.unity.polyspatial.xr (0.5.0)
  • Go to “Edit” → “Project Settings” → “visionOS”. Change “App Mode” to “Virtual Reality - Fully Immersive Space”.
  • Build Xcode Project.

When I think go to build the Xcode project on hardware running Beta 5 (we were required to upgrade), I get the following linker error:

com.unity.polyspatial (0.5.0)
com.unity.xr.visionos (0.5.0)
com.unity.polyspatial.visionos (0.5.0)
com.unity.polyspatial.xr (0.5.0)

Undefined symbols for architecture arm64:
  "_GetPolySpatialNativeAPI", referenced from:
      _RKRuntimeFuncs_GetPolySpatialNativeAPI_static_mCA2433F613CA9024ED9FD398154B1E40228DECCB in libGameAssembly.a(d5tviwpm3pww.o)
     (maybe you meant: _RKRuntimeFuncs_GetPolySpatialNativeAPI_mE2254CB9DD6A5BABD4FEF5DF5AA6FEE065482184, _RKRuntimeFuncs_GetPolySpatialNativeAPI_static_mCA2433F613CA9024ED9FD398154B1E40228DECCB , _RKRuntimeFuncs_GetPolySpatialNativeAPI_mE2254CB9DD6A5BABD4FEF5DF5AA6FEE065482184_RuntimeMethod_var )
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Note I also tried removing the three com.unity.polyspatial.* packages based on other posts, but that didn’t work either. In that case I get a different linker error:

ld: Undefined symbols:
  _UnityVisionOS_OnInputEvent, referenced from:
      <initial-undefines>
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Overall I’m trying to avoid PolySpatial (RealityKit) and hoping that Fully Immersive apps use Metal and as such, are more mature and performant, so that we have a viable path forward based on our game’s requirements, is that the case?

Thanks in advance,

-Jack.

Hi,

If you can, could you submit a bug and attach a project to repro this issue? The _GetPolySpatialNativeAPI issue should be fixed in 0.5.0 - shouldn’t have to remove the PolySpatial packages. But we’ll be able to tell more with a repro project.

I can’t speak on the performance of fully-immersive apps, but feature-wise, fully-immersive will have more parity with normal Unity than mixed reality/PolySpatial at this point. Fully immersive has generally lower display resolution and rendering quality than mixed reality at the moment, but we are working to fix that.

Thanks!

OK, so, what I’m finding today, is that if I untick “Enable PolySpatial”, that triggers this linker error to occur, and this is with 0.5.0.

Also note I’ve indeed found fully immersive to be immediately far more performant, which I assume is because it’s using a Metal based rendering path and isn’t trying to synchronize with a RealityKit scene?

WIth fully immersive apps, should I have “Enable PolySpatial” enabled, or disabled?

OK, I’ve created a fresh project, it’s trivial, simply create a new project, add the latest packages, and that project will fail to link when targetting device.

Please note that it’s actually really frustrating needing to use the Bug Reporter, because it takes aaaaaggeees for the actual bug reporter to complete, even for a toy example. For our full project, it would run into hours, so it’s eating away at the precious little time we have.

Here’s the bug number:
CASE IN-60190

Oh by the way, the linker error is always there if you don’t have “Enable PolySpatial” ticked in “Edit” → “Project Settings” → “PolySpatial”.

Thanks for your patience. I get that the uploads to the bug reporter can be super slow. In cases like this, some users have ended up using a private Google Drive or Dropbox link. It sounds like we’ve been able to reproduce the issue on our and and we’re looking into a fix.

1 Like

Should this issue be fixed as of 0.6.3?

I know this is the wrong forum but this issue effects Windowed builds in 0.6.3. It didn’t in 0.4.3 (i.e. I was able to make builds with the Polyspatial plugin included but disabled to create a Windowed build).

As of 0.6.3 the behaviour is exactly as described above:

Undefined symbols for architecture arm64:
“_GetPolySpatialNativeAPI”

is shown when Polyspatial is in the project but disabled, and a blank Undefined symbols error when removing all Polyspatial-centric plugins/code.