Библиотека iPhone: файл не имеет необходимой архитектуры - PullRequest
2 голосов
/ 09 октября 2009

Я искал несколько часов, но до сих пор не понимаю, что не так с моей конфигурацией. Мой проект использует самописный libray (myLib). Эта библиотека скомпилирована для работы только для симулятора и прекрасно работает там.

Что нужно изменить, чтобы он также компилировался для моего устройства iPhone ?

Это мое текущее предупреждение:

ld: warning: in /.../myLib.a, file is not of required architecture

Это моя конфигурация (из myLib.a)

alt text

Я нашел много статей, объясняющих причину этой ошибки, но не смог найти решение:

Симулятор работает на x86 архитектура, в то время как устройство использует ARM архитектура.


Что мне нужно изменить, чтобы моя библиотека работала на моем iPhone?

Спасибо


Редактировать:

Что я сделал до сих пор:

  1. Убрал оба проекта
  2. Установить для библиотеки значение «Устройство» (3.1)
  3. Встроенная библиотека
  4. Перетащите файл .a моей библиотеки в мое приложение

Результат:

Это работает в симуляторе, но установка активного SDK на устройство все еще вызывает ошибку file is not of required architecture.

Я также пытался mahboudz (спасибо за вашу поддержку) ссылка . Он объясняет, как построить проект с помощью сценария оболочки. Однако XCode продолжает жаловаться, что файл библиотеки имеет неправильную архитектуру и сборка завершается неудачей.

Это должно быть очень глупой ошибкой для начинающих.

Ответы [ 3 ]

3 голосов
/ 16 октября 2009

Вам нужно добавить оба файла .a, один, созданный для устройства (build / $ config-iphoneos), и файл, созданный для sim (build / $ config-iphonesimulator), в новый проект. Удостоверьтесь, что вы называете их по-разному, прежде чем помещать их. Вот как AdMob и подобные предложения доставляют свои статичные библиотеки.

1 голос
/ 11 октября 2009

Вам необходимо скомпилировать свою библиотеку для Intel, чтобы симулятор мог использовать ее (что, как я понимаю, вы уже сделали), а затем скомпилировать ее для ARM, чтобы она могла работать на iPhone. Затем вы должны объединить две библиотеки. Есть разные способы сделать это или сделать это более автоматическим.

Вот несколько ссылок, которые могут вам помочь:

http://blog.stormyprods.com/2008/11/using-static-libraries-with-iphone-sdk.html http://www.clintharris.net/2009/iphone-app-shared-libraries/

0 голосов
/ 05 июля 2010

Я тоже встречался с такой же проблемой. Но, похоже, вам не нужно перетаскивать два .a файла в проект приложения, чтобы решить эту проблему. Вот что я сделал:

  1. Перетащите проект статической библиотеки в группу фреймворков проекта приложения
  2. «Получить информацию» для цели в проекте приложения
  3. Установить прямую зависимость статической библиотеки
  4. Очистить все ненужные сборки (например, сборку симулятора) в проекте статической библиотеки
  5. Сборка в проекте приложения
...