Проблемы с связыванием статических библиотек в Xcode 4

Все было в порядке, пока я не обновился до Xcode 4 несколько дней назад. С тех пор у меня были бесконечные проблемы с тем, чтобы все работало как надо. И у меня есть важное обновление, которое мне нужно выпустить. Я перепробовал все возможные варианты настроек, перезапустил, переустановил Xcode, вернулся к старым версиям моих файлов, все.

Мой проект ссылается на три статические библиотеки, содержащиеся в трех других проектах. Я использовал стандартные процессы для связывания библиотек (перетащите файлы проекта в мои, добавьте их продукты в качестве целевых зависимостей, добавьте файлы lib---.a на этапе Link Binary With Libraries). И на самом деле у меня нет проблем с компиляцией конфигурации отладочной сборки как для симулятора, так и для моего тестового устройства.

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

ld: предупреждение: игнорируется файл [...]/Build/Products/Debug-iphonesimulator/libGDataTouchStaticLib.a, файл был создан для архива, который не является связываемой архитектурой (armv6) Неопределенные символы для архитектуры armv6:
"_OBJC_CLASS_ $_GDataSpreadsheetData", на который ссылается: objc-class-ref в ExportViewController.o

Я не могу понять, почему он даже просматривает «Продукты» в каталоге «Debug-iphonesimulator» (клянусь, все, на что я ссылаюсь, обнаруживается в Finder в соответствующем каталоге «Release-iphoneos»).

Я потратил смехотворное количество часов на исправление этого, мне действительно нужна помощь! Спасибо!


person ed94133    schedule 14.03.2011    source источник


Ответы (3)


Пожалуйста, проверьте этот вопрос и ответ. Я столкнулся с той же проблемой и исправил ее.

Проблема связывания Xcode4. Файл был создан для архива, который не является связываемой архитектурой (arm6)

person Seunghoon    schedule 15.03.2011
comment
Спасибо. Я нашел другое решение — просто скопировал файлы .a из каталога Release-iphoneos в каталог Debug-iphonesimulator. Обманул его другими словами, успешно. Затем возникла еще одна ошибка, о которой я расскажу отдельно. - person ed94133; 15.03.2011
comment
У меня была та же проблема, но она была против библиотеки mySettings, это просто простая библиотека настроек приложения, которую я включаю в свое приложение, и что я сделал, так это пошел в библиотеку в разделе целей для mySettings и изменил Build Active Architecture Only from Да на Нет, и после этого все было хорошо. - person mracoker; 25.03.2011

Я решил эту проблему, скопировав файлы .a lib из каталога Release-iphoneos в каталог Debug-iphonesimulator, чтобы можно было найти правильные файлы, даже если Xcode искал не в том каталоге.

Однако затем я столкнулся с проблемой, поднятой здесь пакет с несколькими приложениями - и данное решение не сработало для меня. Наконец бросил и переустановил Xcode 3. Скомпилировал, заархивировал и загрузил в App Store за 20 минут. Пройдет некоторое время и несколько дот-релизов, прежде чем я дам Xcode 4 еще один шанс.

person ed94133    schedule 15.03.2011

Возможно, у вас включен параметр -DGDATA_REQUIRE_SERVICE_INCLUDES=1 в других ваших флагах C для цели GDataTouchStaticLib. Если это так, добавьте нужный вам сервис, в данном случае электронные таблицы, добавив -DGDATA_INCLUDE_SPREADSHEET_SERVICE=1 к другим флагам C. Или, если вы не хотите, чтобы GData требовал сервисных включений (которые встроят все в статическую библиотеку, а не только то, что вам нужно), просто удалите флаг DGDATA_REQUIRE_SERVICE_INCLUDES.

person maranas    schedule 05.01.2012