Проблемы со связыванием статических библиотек в Xcode 4 - PullRequest
4 голосов
/ 14 марта 2011

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

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

Там, где все идет вбок, это когда я компилирую с помощью Release Build Configuration или когда я пытаюсь архивировать. Я получил много разных ошибок в зависимости от моих настроек, но большинство из них - это:

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

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

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

Ответы [ 3 ]

1 голос
/ 15 марта 2011

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

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

0 голосов
/ 05 января 2012

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

0 голосов
/ 15 марта 2011

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

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

...