Ответ 1
Когда вы создаете библиотеку, вы должны скомпилировать ее как для симулятора, так и для устройства, а затем объединить два выхода (.a файлы) в 1 библиотеку, а затем связать их с вашим проектом iOS.
Я создал собственную библиотеку Static С++, которая построена с настройками:
Проект библиотеки строится хорошо, и я получил файл .a(я очистил папку сборки и снова построил проект, чтобы убедиться, что мои настройки эффективны).
Я добавил библиотеку (.a файл) в свой проект iOS, но проект не будет построен, хотя я установил те же самые настройки в проекте iOS:
Я продолжаю получать эту ошибку:
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, но это именно те настройки, которые я создал с помощью библиотеки.
Когда вы создаете библиотеку, вы должны скомпилировать ее как для симулятора, так и для устройства, а затем объединить два выхода (.a файлы) в 1 библиотеку, а затем связать их с вашим проектом iOS.
Я столкнулся с подобной проблемой сам. Решение @graver
определенно справедливо.
Проблема заключалась в том, что библиотека строилась для armv7
вместо armv7s
. Вы можете проверить это самостоятельно, используя lipo <path/to/lib.a> -info
.
Установка параметра Build Active Architectures Only
на No
устраняет проблему.
Надеюсь, что это поможет.
одна дополнительная заметка:
Build Active Architectures Only set to no
для проекта lib.
У меня есть такая же ошибка, когда с cocapods: для меня решение должно было иметь два разных варианта Build Active Architecture для целей и контейнеров.
Цель приложения:
Build Active Architectures Only **Yes**
pods Target
Build Active Architectures Only **No**
К сожалению, все эти советы не работают для меня - Xcode 7.3.1 (7D1014), iPhone 5. но как только я удалил все временные файлы Xcode (+ перезапустить Xcode) и снова восстановил, он стал работать.
Это случилось со мной в Facebook SDK (v 4.24.0), используемом через CocoaPods.
Очистка или настройка Build Active Architectures Only
до NO
на Pods не решила проблему.
Решение заключалось в том, чтобы очистить каталог сборки (см. Параметры сборки/Место сборки /CONFIGURATION _BUILD_DIR) ИЛИ $(CONFIGURATION_BUILD_DIR)
Переменная Xcode.
Я использую XCode 5.1.1 и столкнулся с описанной проблемой. Более удобным способом решения этой проблемы является создание архива (через меню "Сборка/Архив" ) и его распространение. Распределенный файл lib будет содержать все определенные архитектуры.