UAR Unity iOS Xcode Undefined Symbol Errors

When building a Unity project using Unity 2020.3.9f1 using Universal AR 3.0.1 Xcode gives the following errors.

Undefined symbols for architecture arm64:
“_glGenTextures”, referenced from:
ERS::Buffer::uploadGL() in libzcv.a(BufferHandler.o)
ERS::Buffer::getGLTextureId() in libzcv.a(BufferHandler.o)
“_glTexParameteri”, referenced from:
ERS::Buffer::uploadGL() in libzcv.a(BufferHandler.o)
“_glTexImage2D”, referenced from:
ERS::Buffer::uploadGL() in libzcv.a(BufferHandler.o)
“_glBindTexture”, referenced from:
ERS::Buffer::uploadGL() in libzcv.a(BufferHandler.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

This is when using a fresh Unity project that builds to the device fine in isolation but as soon as the UAR package is added through the package manager Xcode now gives the above error and fails to build.

Any support would be appreciated.

Hi,

Once you have built the iOS Xcode project, you’ll need to link OpenGLES.framework with the UnityFramework placed under your project targets. Further, if you are building a Face Tracked experience (and / or if you’re using the Face Mesh) for iOS you will need to add the ZCV.bundle file into the root level of your generated Xcode project. This file can be found in Packages/com.zappar.uar/Plugins/iOS/ZCV.bundle, you can navigate to the location from Unity editor as well by selecting the bundle from editor then right-click on it and select Show in Finder. When including it into the project make sure that it is selected as a target of “Unity-iPhone” (or the relevant name of your application).

Best,

1 Like

I just found this solution as you sent this message. Build completes now.

Thanks for your help

how do i link the ZCV.bundle file as a target in xcode ?


i keep getting this error when starting the ipad app via xcode on my ipad

is there a step by step guide or a ready made unity project to evaluate the face tracking, natively ? which unity version is recommend? how to setup the target in xcode ?

cheers

Hey @wirmachenbunt

Adding ZCV.bundle to iOS project should be a simple 2 step process.

  1. Copy the ZCV.bundle at the root level of your build directory. (Readme here explains on how and where to find it).
  2. Add the ZCV.bundle to your Unity-iPhone project by simple add files option in Xcode.

We officially support all Unity LTS version 2019 and above.

Lastly you would have to link OpenGLES.framework to UnityFramework. For this, go to UnityFramework under Targets and scroll to Frameworks and libraries section, click on + button at bottom and search for OpenGLES.framework in list (check the image below). We plan to avoid this in upcoming releases as OpenGLES has been deprecated, and moving forward we will use Metal as the only API supported for Mac and iOS.

HTH

Best,