Подтвердить что ты не робот

Ошибка: "Файл был создан для архива, который не связан с архитектурой (armv7s)"

Я создал собственную библиотеку Static С++, которая построена с настройками:

  • Архитектуры: armv7, armv7s
  • Только создание активных архитектур: Нет
  • Платформы поддержки: iOS
  • Действительные архитектуры: armv7, armv7s

Проект библиотеки строится хорошо, и я получил файл .a(я очистил папку сборки и снова построил проект, чтобы убедиться, что мои настройки эффективны).

Я добавил библиотеку (.a файл) в свой проект iOS, но проект не будет построен, хотя я установил те же самые настройки в проекте iOS:

  • Архитектуры: armv7s, armv7
  • Только создание активных архитектур: Да
  • Платформы поддержки: iOS
  • Действительные архитектуры: armv7, armv7s

Я продолжаю получать эту ошибку:

ld: предупреждение: игнорирование файла/Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a, файл был построенный для архива, который не связан с архитектурой (armv7s):/Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a

Что мне не хватает? Он сообщает мне, что файл .a не был создан для armv7s, но это именно те настройки, которые я создал с помощью библиотеки.

4b9b3361

Ответ 1

Когда вы создаете библиотеку, вы должны скомпилировать ее как для симулятора, так и для устройства, а затем объединить два выхода (.a файлы) в 1 библиотеку, а затем связать их с вашим проектом iOS.

Ответ 2

Я столкнулся с подобной проблемой сам. Решение @graver определенно справедливо.

Проблема заключалась в том, что библиотека строилась для armv7 вместо armv7s. Вы можете проверить это самостоятельно, используя lipo <path/to/lib.a> -info.

Установка параметра Build Active Architectures Only на No устраняет проблему.

Надеюсь, что это поможет.

Ответ 3

одна дополнительная заметка:

    Build Active Architectures Only  set to no

для проекта lib.

Ответ 4

У меня есть такая же ошибка, когда с cocapods: для меня решение должно было иметь два разных варианта Build Active Architecture для целей и контейнеров.

Цель приложения:

Build Active Architectures Only  **Yes**

pods Target

Build Active Architectures Only  **No**

Ответ 5

К сожалению, все эти советы не работают для меня - Xcode 7.3.1 (7D1014), iPhone 5. но как только я удалил все временные файлы Xcode (+ перезапустить Xcode) и снова восстановил, он стал работать.

Ответ 6

Это случилось со мной в Facebook SDK (v 4.24.0), используемом через CocoaPods.

Очистка или настройка Build Active Architectures Only до NO на Pods не решила проблему.

Решение заключалось в том, чтобы очистить каталог сборки (см. Параметры сборки/Место сборки /CONFIGURATION _BUILD_DIR) ИЛИ $(CONFIGURATION_BUILD_DIR) Переменная Xcode.

Ответ 7

Я использую XCode 5.1.1 и столкнулся с описанной проблемой. Более удобным способом решения этой проблемы является создание архива (через меню "Сборка/Архив" ) и его распространение. Распределенный файл lib будет содержать все определенные архитектуры.