Игнорирование файла [путь] отсутствует требуемая архитектура i386 в файле
Я новичок в разработке Xcode и Iphone и столкнулся с следующей проблемой:
Я открыл новый проект и добавил *.h и *.a файлы (которые я получил от определенного поставщика устройств).
Я получаю следующее предупреждение:
ld: предупреждение: игнорирование файла/Пользователи/udi/Desktop/Xcode/Xcode Projects/Scosche/libmyTrekSDK_armv7.a, отсутствует требуемая архитектура i386 в файле/Пользователи/udi/Desktop/Xcode/Xcode Projects/Scosche/libmyTrekSDK_armv7.a(2 среза)
Если я игнорирую предупреждение и пытаюсь установить класс, который предоставляется мне в файле заголовка, я получаю следующие ошибки:
ld: предупреждение: игнорирование файла [Path/FileName.a], отсутствие требуемой архитектуры i386 в файле [Path/FileName.a] (2 среза)
Undefined символы для архитектуры i386:
"_ OBJC_CLASS _ $_ HRMonitor", на который ссылается:
objc-class-ref в ViewController.o
ld: символ (ы), не найденный для архитектуры i386
clang: ошибка: сработала команда компоновщика с кодом выхода 1 (используйте -v, чтобы увидеть Вызов)
Я проверил Framework Search Pathes (как и многие другие сообщения), и это ясно.
Дополнительная информация:
- Я использую Xcode 4.6.1
- В настоящее время файлы находятся в корневой папке проекта.
- Я использую одноразовый шаблон приложения.
Оцените любую помощь
Ответы
Ответ 1
Это предупреждение означает, что вы пытаетесь использовать библиотеку для устройства (ARM) с вашим симулятором (i386).
Вы можете использовать эту команду терминала для создания универсальной библиотеки:
lipo -create lib_arm.a lib_i386.a -output lib_universal.a
Подробнее о липо команда здесь.
Ответ 2
Измените целевую настройку "Настроить параметры" > "Только создавать активные архитектуры" на "Нет"
Это делает то же, что и Дмитрий Жуков, но делает это через Xcode вместо того, чтобы обойти его.
Ответ 3
Если вы работаете с сторонним кодом, имейте в виду, что некоторые SDK могут не работать на симуляторе. Одна и та же ошибка сборки, с которой я столкнулся, исчезла, когда я запустил проект на устройстве.