Подтвердить что ты не робот

Отсутствует требуемая архитектура x86_64 в файле libCorePlot-CocoaTouch.a

Согласно учебнику Ray Wenderlich, я сделал следующее:

Шаг 1 - Я загрузил CorePlot_1.4.zip на официальном сайте

Шаг 2 - Я добавил в свой проект папку CorePlotHeaders и статическую библиотеку с именем libCorePlot-CocoaTouch.a (проверка "Копирование элементов" в папку целевых групп (если необходимо) ")

Шаг 3 - Я добавил в поле Другие флаги компоновщика следующее: -ObjC

Шаг 4. Я проверил Link Binary с библиотеками, если libCorePlot-CocoaTouch.a и QuartzCore. были здесь

Результат: Когда я скомпилирую свой проект, он отлично работает, когда я использую Iphone Retina (4-дюймовый). Но когда я использую Iphone Retina (4-дюймовый 64-разрядный) Я получил следующее сообщение, когда пытаюсь создать и запустить:

ld: warning: ignoring file /blah/blah/libCorePlot-CocoaTouch.a, missing required architecture x86_64 in file /blah/blah/libCorePlot-CocoaTouch.a (3 slices)

Здесь полное сообщение:

ld: warning: ignoring file /Users/me/Desktop/project/libCorePlot-CocoaTouch.a, missing required architecture x86_64 in file /Users/me/Desktop/project/libCorePlot-CocoaTouch.a (3 slices)
Undefined symbols for architecture x86_64:
"_CPTDecimalFromCGFloat", referenced from:
  -[PatientConstanteVisualiser configurePlots] in PatientConstanteVisualiser.o
  -[PatientConstanteVisualiser configureAxes] in PatientConstanteVisualiser.o
"_CPTDecimalFromInteger", referenced from:
  -[PatientConstanteVisualiser configureAxes] in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTAxisLabel", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTColor", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTFill", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTMutableLineStyle", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTMutableTextStyle", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTPlotSymbol", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTScatterPlot", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTTheme", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_OBJC_CLASS_$_CPTXYGraph", referenced from:
  objc-class-ref in PatientConstanteVisualiser.o
"_kCPTStocksTheme", referenced from:
  -[PatientConstanteVisualiser configureGraph] in PatientConstanteVisualiser.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

4b9b3361

Ответ 1

Если вам нужна 64-разрядная версия Core Plot, вам нужно будет создать новую версию статической библиотеки. Для сборки Arm64 требуется iOS 7, но Core Plot поддерживает более ранние версии, поэтому встроенная библиотека только 32-разрядная.

Откройте CorePlot-CocoaTouch.xcodeproj и измените параметры архитектуры на "Стандартные архитектуры (включая 64-разрядные)". Либо создайте цель "Универсальная библиотека" и включите результирующую статическую библиотеку вместо той, которая включена в Core Plot 1.4, либо используйте зависимую настройку проекта.

Ответ 2

CorePlot выпустил 1.5.1 для работы с Xcode 5.1. Вам нужно только скопировать папку CorePlotHeaders и файл libCorePlot-CocoaTouch.a в ваш проект.

Вы можете скачать его из здесь.

Ответ 3

Try:

lipo -info libCorePlot-CocoaTouch.a

Он показывает, что библиотека построена для armv7, armv7s и i386 (32-битный симулятор) и не включает в себя 64-битный симулятор. Вам нужно будет построить lib для 64-битного симулятора, после чего вы можете использовать lipo для добавления 64-битного lib в libCorePlot-CocoaTouch.a.

Вывод:

Architectures in the fat file: libCorePlot-CocoaTouch.a are: armv7 armv7s i386

PS: Он не будет работать и на iPhone 5S (без arm64).

EDIT:

Ниже приведены шаги, которые необходимо выполнить для создания двоичного файла с архитектурой arm64 и x86_64:

  • скачать CorePlot_1.4 из https://code.google.com/p/core-plot/downloads/detail?name=CorePlot_1.4.zip&can=2&q=
  • Откройте проект Xcode (CorePlot-CocoaTouch.xcodeproj), расположенный в CorePlot_1.4/Source/framework
  • Выберите "Стандартные архитектуры" для "архитектур" и "Последние iOS (iOS 7)" для "Base SDK"
  • Постройте библиотеку (CMD + B)
  • Перейти к CorePlot_1.4/Source/build/в терминале
  • Запустить липо-образ./Debug-iphoneos/libCorePlot-CocoaTouch.a./Debug-iphonesimulator/libCorePlot-CocoaTouch.a -output core_plot_all.a
  • Добавить созданный lib (core_plot_all.a) в ваш проект
  • Вы готовы пойти

Ответ 4

измените настройку архитектуры Xcode

enter image description here

Ответ 5

Если вы не хотите проходить процесс загрузки и создания проекта, я создал универсальную библиотеку (для armv7, armv7s и arm64) и поставьте его здесь.

Это построено из идентификатора фиксации coreplot cc0a18cef8915f4a11e0699e9429c0a2f0018b42.

Ответ 7

Если вы пробовали все выше, но все еще не работали, попробуйте установить -ObjC -lCorePlot-CocoaTouch в "Другие флагов компоновщика" в "Настройки сборки" или целевой объект проекта.

Ответ 8

Простейшее решение, которое работает для меня: перейдите в свой проект > настройка сборки > архитектура. Измените архитектуру как armv7 и удалите других, таких как armv6 и т.д., Как показано на рисунке ниже: -

Изменить обязательный

Ответ 9

У меня были такие же ошибки с Xcode7.3 + CocoaPod. И я исправил проблему с помощью других флагов Linker = $(унаследованных).

Конечно, этот параметр действителен только с CocoaPod.