Ошибка при добавлении статических библиотек в один проект - PullRequest
3 голосов
/ 12 июня 2011

Я пытаюсь научиться создавать и использовать статические библиотеки в моих проектах XCode, используя этот пример.Однако я продолжаю получать эту ошибку:

ld: warning: ignoring file /Developer/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils.a,    
missing required architecture i386 in file
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MathFunctions", referenced from:
  objc-class-ref in MathTestViewController.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

Чего мне не хватает?

Ответы [ 2 ]

5 голосов
/ 12 июня 2011

Вы, похоже, создаете симулятор, который соответствует архитектуре i386, но вы подключаетесь только к библиотеке iphone (arm).

Чтобы решить эту проблему, вы должны скомпилировать вашу библиотеку libICodeMathUtils.aдля i386 и arm.

После просмотра учебника вы следовали: лучший способ интеграции статической библиотеки в ваш проект - определение зависимости.Вы можете посмотреть эту статью SO для Xcode 4 , а для этой статьи - Xcode 3 (шаги приведены в самом вопросе).

У вас есть еще один вариантстроит вашу библиотеку отдельно для i386 (симулятор) и arm (устройство), а затем с помощью инструмента командной строки lipo создайте толстую библиотеку, которую вы можете связать в своем проекте MathTest.Отметьте man lipo, чтобы узнать, как правильно использовать инструмент.

РЕДАКТИРОВАТЬ: о вашем комментарии

Моя статическая библиотека не отображается в целевых зависимостях !!

Вы перетаскивали статическую библиотеку из включенного дерева проекта в цель?шаги для Xcode 3:

  1. добавить проект библиотеки как включенный проект;

  2. найти статическую библиотеку во включенном проекте и перетащитьдобавьте его к вашей основной цели, добавив его в качестве связанной структуры;

  3. наконец, в вашей информационной панели цели вы можете добавить зависимость.

Xcode4 может автоматически определять зависимости, если цели добавляются в Схему проекта.Вы можете сделать это, выполнив: Edit Scheme -> Build ->, а затем добавив цели из вашей рабочей области.Смотрите также этот ТАК вопрос .

1 голос
/ 02 октября 2013

В моем случае,

> Найдите настройку сборки «Другие флаги компоновщика».Добавьте флаг -ObjC к значению этого параметра сборки, если он еще не существует << </p>

https://developer.apple.com/library/ios/technotes/iOSStaticLibraries/Articles/configuration.html#//apple_ref/doc/uid/TP40012554-CH3-SW1

...