Игнорирование файла [путь] отсутствует требуемая архитектура 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 могут не работать на симуляторе. Одна и та же ошибка сборки, с которой я столкнулся, исчезла, когда я запустил проект на устройстве.