#objective-c #ios #xcode4 #linker
#objective-c #iOS #xcode4 #компоновщик
Вопрос:
Я пытаюсь использовать EGOPhotoViewer в качестве статической библиотеки в моем проекте, так что мне не нужно включать весь их исходный код непосредственно в мой проект.
Я разветвил проект и создал статическую библиотеку cocoa touch для генерации libEGOPhoto.a
В демонстрационный проект были внесены изменения, позволяющие использовать статическую библиотеку вместо исходного кода, поэтому я удалил библиотечные классы и добавил статическую библиотеку в качестве фреймворка. В одном другом ответе stack предлагалось добавить его в качестве скомпилированного исходного кода, но это тоже не сработало.
Ошибка, которую я получаю, связана со компоновкой и заключается в следующем:
ld: предупреждение: игнорирование файла /Users/pbrooks/Library/Developer/Xcode/DerivedData/EGOPhotoViewer-chniasxgqzkdbwhjedastrvwlmek/Build/Products/Debug-iphoneos/libEGOPhotoViewer.a файл был создан для архива, который не является связанной архитектурой (i386)
Неопределенные символы для архитектуры i386:
«_OBJC_CLASS_ $_EGOPhotoViewController», на который ссылается: objc-class-ref в RootViewController.o objc-class-ref в DetailViewController.o objc-class-ref в RootViewController_iPhone.o ld: символ (ы) не найден для архитектуры i386лязг: ошибка: команда компоновщика завершилась ошибкой с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
Есть какие-нибудь советы по правильной компоновке?
Ответ №1:
Вы пытаетесь выполнить компиляцию для simulator (для которой требуется архитектура i386 для процессоров Intel на вашем Mac). Вероятно, ваша библиотека скомпилирована для архитектуры ARMv6 / ARMv7, используемой для устройств iOS. Возможно, вы сможете просто запустить его на устройстве как есть. Если вы также хотите работать на симуляторе, вам следует создать разные библиотеки и связать их в зависимости от того, ориентируетесь ли вы на устройство iOS или на симулятор (или создайте универсальную библиотеку, которая содержит обе архитектуры).
Комментарии:
1. Я надеялся, что создаю библиотеку только для симулятора, но, увы, нет. Я еще не создал универсальную библиотеку, но спасибо за ссылку, и я попробую.
2. Спасибо за указатель на статью, это направило меня в правильном направлении, и, конечно, ваш прогноз был верным. Только сейчас нужно решить проблемы BAD_ACCESS с библиотекой.
3. Спасибо за подсказку. Автор статьи сказал, что статья устарела. новая статья находится здесь: db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0