У меня есть проект iOS, который связывается с Unity в качестве библиотеки. Все собиралось без проблем до сегодняшнего дня после обновления до XCode16. Теперь мой проект не может собраться с нижеуказанной ошибкой
Неопределенные символы для архитектуры arm64:
"__mh_execute_header", на который ссылается:
Builder.UnityService.(loadUnityFramework in _C1B4CF2F667E7F31717AD3C6734A533B)() -> __C.UnityFramework? в UnityService.o
ld: символ(ы) не найдены для архитектуры arm64
clang: ошибка: команда линковщика завершилась с кодом выхода 1 (используйте -v для просмотра вызова)
Я попробовал обновить до последней версии Unity для сборки, и снова та же ошибка. Я не совсем понимаю, как это отладить, кто-нибудь еще смог собрать Unity в качестве библиотеки в XCode16, какие другие шаги по отладке я могу предпринять?
Ответ
При обновлении до Xcode 16, возникшие ошибки при сборке проектов, использующих Unity в качестве библиотеки, не являются чем-то необычным. Ошибка Undefined symbols for architecture arm64
обычно указывает на проблемы с компоновкой библиотек или изменение конфигурации проекта. Вот несколько шагов, которые помогут вам решить данную проблему:
-
Обновление кода библиотеки: Убедитесь, что у вас последняя версия Unity, которая поддерживает Xcode 16. Некоторые версии Unity могут иметь проблемы с совместимостью после обновления Xcode.
-
Проверка настроек компоновщика: Проверьте настройки компоновщика в вашем проекте в Xcode:
- Перейдите к вашим целям (Targets) и выберите целевую библиотеку.
- Перейдите в раздел
Build Settings
и найдитеArchitectures
. Убедитесь, чтоarm64
включен в список значений.
-
Проверка
UnityFramework
: Убедитесь, чтоUnityFramework
правильно встроен в ваш проект:- Убедитесь, что
UnityFramework.framework
добавлен в разделLink Binary With Libraries
у вашего основного проекта и открытой библиотеки Unity. - Проверьте, что путь к
UnityFramework
указан в разделеFramework Search Paths
вашего проекта.
- Убедитесь, что
-
Пересоздание проекта: Иногда полезно полностью пересоздать проект:
- Создайте новый проект Unity и экспортируйте его как библиотеку снова.
- Импортируйте новую библиотеку в ваш проект Xcode, как это было сделано ранее.
-
Очистка проекта: Проведите очистку и пересборку проекта:
- В Xcode выберите
Product
->Clean Build Folder
(или воспользуйтесь комбинацией клавишShift + Command + K
), а затем соберите проект заново.
- В Xcode выберите
-
Проверка наличия дублирующих символов: Если в вашем коде используется несколько библиотек, убедитесь, что вы не ссылались на одну и ту же библиотеку несколько раз, что может вызвать конфликты.
- Логи компоновщика: Если ошибка продолжает возникать, запустите сборку с дополнительными флагами для логирования:
- В разделе
Edit Scheme
можно добавить флаг verbose для компоновщика (linker):-v
. Это позволит вам увидеть более полную информацию о процессе компоновки и поможет выявить возможные проблемы.
- В разделе
Если после выполнения вышеуказанных шагов ошибка не устранена, рассмотрите возможность обращения к сообществу разработчиков Unity, где вы можете получить помощь от других разработчиков, которые сталкивались с аналогичными проблемами.