Ошибка сборки Unity Vuforia Xcode: неопределенные символы для архитектуры arm64

В настоящее время я пытаюсь создать проект (который работал ранее) в Xcode. Это проект Unity, в котором используется плагин Vuforia, и он безупречно строится на Android.

При сборке в Xcode я получаю следующее сообщение об ошибке:

    Undefined symbols for architecture arm64:
  "_UnityRenderBufferMTLTexture", referenced from:
      PlatformiOS::setRenderBuffers(void*) in libVuforiaUnityPlayer.a(PlatformiOS.o)
  "_UnityCurrentMTLCommandEncoder", referenced from:
      PlatformiOS::setRenderBuffers(void*) in libVuforiaUnityPlayer.a(PlatformiOS.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я включил Security.framework и SystemConfiguration.framework в проект.

Юнити 5.5.0f3; Вуфориа SDK v5.5.9; XCode 8.2.1


person Herman Martinus    schedule 14.02.2017    source источник


Ответы (1)


Я исправил проблему, обновив Vuforia в проекте Unity, хотя, когда до обновления я не удалял файлы Vuforia в папке Plugins. Ранее я пытался выполнить правильное обновление Vuforia, но это не удалось.

Итак, шаги: 1 - Удалить активы/Vuforia

2 - Обновите VuforiaCamera.cs (Assets/Scripts/Vuforia) до приведенного ниже кода.

3 - Импорт последнего пакета Vuforia

4 - Прибыль!

public class VuforiaCamera : MonoBehaviour
{
    private bool mVuforiaStarted = false;

    void Start()
    {
        VuforiaARController vuforia = VuforiaARController.Instance;

        if (vuforia != null)
            vuforia.RegisterVuforiaStartedCallback(StartAfterVuforia);
    }

    private void StartAfterVuforia()
    {
        mVuforiaStarted = true;
        SetAutofocus();
    }

    void OnApplicationPause(bool pause)
    {
        if (!pause)
        {
            // App resumed
            if (mVuforiaStarted)
            {
                // App resumed and vuforia already started
                // but lets start it again...
                SetAutofocus(); // This is done because some android devices lose the auto focus after resume
                // this was a bug in vuforia 4 and 5. I haven't checked 6, but the code is harmless anyway
            }
        }
    }

    private void SetAutofocus()
    {
        if (CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO))
        {
            Debug.Log("Autofocus set");
        }
        else
        {
            // never actually seen a device that doesn't support this, but just in case
            Debug.Log("this device doesn't support auto focus");
        }
    }
}
person Herman Martinus    schedule 14.02.2017
comment
В какой версии Vuforia есть VuforiaCamera.cs? Я использую 6.2.10 и не имею VuforiaCamera для обновления - person Daniel Arantes Loverde; 19.04.2017
comment
@DanielArantesLoverde Я столкнулся с той же проблемой. Я не вижу там скрипта vuforiacamera. Как вы решаете эту проблему. Пожалуйста помоги - person vanshika; 24.01.2018
comment
@vanshika Прости, чувак, я не могу вспомнить, что я делал. Но я, вероятно, поменяю версию Unity или переделаю проект с нуля... если я помню, я отпишусь здесь, но, возможно, я переделаю его. - person Daniel Arantes Loverde; 24.01.2018