Ответ 1
По внешнему виду вам понадобится перестроить библиотеку libCorePlot с помощью Xcode 4.5GM, чтобы там была построена библиотека ARMV7S. Кажется, что он пытается использовать версию, которую вы создали с помощью старого Xcode.
Я только что обновился до Xcode 4.5GM
и убрал некоторые экраны в моем iPhone-проекте, чтобы справиться с дополнительным размером экрана на iPhone 5. Проект нацелился на iOS 5.1
, и я только что придумал его для моего телефона, и я получаю эту ошибку компоновщика:
файл является универсальным (2 среза), но не содержит (n) armv7s slice: /Users/JonathanW/Documents/MyXcode/myApp/myApp/CorePlot/libCorePlot -CocoaTouch.a для архитектуры armv7s
Я использую статическую библиотеку Core Plot 1.0
в моем проекте и до сих пор не имел никаких проблем с ней. Оглядываясь, я вижу похожие ошибки, связанные с настройками архитектуры сборки, но не уверен, куда идти отсюда. Проект отлично работает в симуляторе (оба iOS 5.1
и iOS 6
). Любые идеи?
По внешнему виду вам понадобится перестроить библиотеку libCorePlot с помощью Xcode 4.5GM, чтобы там была построена библиотека ARMV7S. Кажется, что он пытается использовать версию, которую вы создали с помощью старого Xcode.
Я также использую статическую библиотеку Core Plot 1.0 в своем проекте. Я смог решить проблему, установив Только встроенные активные архитектуры Да. Создание активных архитектур Только в разделе "Архитектура" целевых настроек сборки в Xcode.
Я загрузил zip файл Core Plot 1.0, который кажется неполным, поэтому я не могу перестроить библиотеки.
Он работает в симуляторе, потому что симулятор всегда будет использовать архитектуру i386. Это не изменилось с новым SDK. Изменилось присутствие iPhone 5, в котором используется новая архитектура (armv7s). Проект для вашего приложения автоматически добавил armv7s в качестве допустимой архитектуры, но библиотека, вероятно, была скомпилирована без знания этого. Таким образом, ваше приложение, поддерживающее arm7s, пытается связать с библиотекой, которая была построена без armv7s, и не работает.
Чтобы исправить это, вам просто нужен доступ к проекту, который создает библиотеку. Измените параметр "Действительная архитектура" на цели, чтобы включить armv7, а затем перестройте.
Я боролся с этим в течение нескольких дней и, наконец, смог заставить его работать, создав новую статическую библиотеку.
Я использовал систему управления Mercurial Source Code с помощью инструкций здесь: Создать статическую библиотеку с использованием Mecurial и "Установка статической библиотеки Core-Plot" "из wiki, найденного здесь: Как сделать статическую библиотеку Установка Core-Plot
Я отправляю это для таких людей, как я, с низким опытом, так как это довольно просто и объясняется самим собой.
Вы сделали чистую и перестроенную? Также проверьте, что у вас есть armv6 и armv7 в архитектурах. Возможно, вам придется перекомпилировать ваши цели и повторно добавить библиотеки в целевые
Переключить компилятор в проект CorePlot из Apple LLVM Compiler 4.1 в LLVM GCC 4.2
Просто я скомпилировал библиотеку основного сюжета и выполнил установку зависимого проекта по этой ссылке http://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications
и каждый предмет похож на обаяние (мой проект теперь без проблем работает как с armv7, так и с armv7), кроме того, я все еще устанавливаю Build Active Architecture только в NO, чтобы поддерживать все архитектуры
Вам просто нужно удалить armv7 из списка допустимых архитектур.
просто выполните следующие действия. -Выберите свой проект из Навигатора проектов -Выберите цель из списка целей -Выберите вкладку настроек сборки -Найдите параметр "Действительные архитектуры". Он должен сказать armv7 armv7s. Удалите armv7s, и в ваших действительных архитектурах будет только armv7. Теперь ваш проект будет правильно скомпилирован.
Исправить ошибки компоновщика для Core Plot при использовании Xcode 5
Я много лет использую Core Plot и получаю кучу ошибок "Apple Mach-O Linker Warning" о том, что armv7s не поддерживает определенные файлы в обновленной папке "CorePlotHeader" (удаленная папка в настоящее время в моем проекте и перетащил новую папку в мой проект), чтобы отразить изменения CorePlot_1.4. Я также удалил старую библиотеку libCorePlot-CocoaTouch.a и ввел ее в мою папку Framework. Все работало отлично в симуляторе, но я не мог построить свой iPad 4 с iOS 7.0.2.
Вот единственное, что я нашел, что работает, когда отладка (кажется, работает при архивировании и т.д.):
1) Сделайте все, о чем я упоминал выше, настройте Build Active Architect на No, а затем очистите
2) Возможно, возникла ошибка в том, что архитектура "arm64" не поддерживается, поэтому удалите "arm64" из раздела "Действительная архитектура" в настройках сборки
3) Щелкните правой кнопкой мыши на файле "MyApp.app" в папке "Продукты" при отладке, и вы можете увидеть старый "libCorePlot-CocoaTouch.a" (если измененная дата предшествует 9/28/13), компиляция с ваше приложение.
4) Удалите эту библиотеку и скопируйте новую в папку сборки, очистите, затем перестройте
Это работает для метода "Установка статической библиотеки" и не тестировалось с использованием метода "Зависимая установка проекта".
Я использую статическую библиотеку Core Plot 1.0 для iOS 6.1 в Xcode 4.4. После обновления до Xcode 4.5 с iOS 7.0 я столкнулся с той же проблемой, что и ваш.
Чтобы исправить это, я удалил папку CorePlotHeaders и libCorePlot-CocoaTouch.a в моем проекте. Если вы удалите его в Xcode, выберите вариант "Переместить в корзину".
Затем я загружаю CorePlot_1.4.zip из https://code.google.com/p/core-plot/downloads/list, затем я следую за установкой статической библиотеки из https://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications
Надеюсь, что это поможет