XCode 6 GM: ошибка компоновщика при построении устройства (металл не найден)

Я пытаюсь создать свой проект в XCode 6 GM для устройства (базовая версия SDK - 7.1), и я получаю ошибку компоновщика:

ld: framework not found Metal for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Тот же проект отлично строится на XCode 5 без каких-либо изменений в настройках проекта. (Кроме того, сборка в XCode 6 для симулятора завершается успешно.)

Я создаю SDK 7.1, почему XCode 6 пытается в любом случае ссылаться на Metal?

Ответ 1

С той же проблемой. Я могу создать приложение отлично в Xcode 6, указанном на симуляторе или телефоне, но при архивировании я получаю эту ошибку. Я использую SDK iOS 7.1.

Я использую cocoapods и обнаружил, что могу исправить эту проблему либо с помощью автоматической установки "Структуры ссылок" на NO для проекта pods, либо путем архивирования, когда есть подключенное устройство, и схема нацелена на устройство не просто "Устройство iOS".

Это проблема, вызванная настройками сборки проекта по умолчанию Xcode 6.

Изменить: Вот еще одно объяснение этого решения: http://www.appsee.com/blog/dev/xcode-new-link-frameworks-automatically-fix-framework-not-found-metal-for-architecture-armv7

Ответ 2

У меня была такая же проблема в базовом построении кода Fine IOS 8.0 SDK (Xcode 6.0.1) и возникла проблема с iOS 7.1 SDK (хотя в Xcode 5.1.1). Похоже, что существует много разных проектов, имеющих эту проблему. Подробнее см. здесь.

Что исправлено для меня, я собираюсь перейти к настройкам "Настройка фазы" моих целей "Связывание двоичных файлов с библиотеками", а также удаление и повторное добавление CoreVideo.framework, "Product > Clean", наконец, "Продукт" > Выполнить.

Ответ 3

Использование iOS 7.1 SDK с Xcode 6 не поддерживается. Здесь компоновщик ведет себя корректно. 7.1 SDK не содержит Metal.framework для ссылки, и вы попросили связать его с Metal.framework. Вам нужно использовать SDK iOS 8.0 или более позднюю версию, чтобы использовать Metal.framework.