Нужна помощь в iOS lib armv7 и 64-битной версии

Я создаю проект с помощью Core-Plot lib. Я добавляю библиотеку статическим способом . Как запустить приложение на 32- и 64-разрядных устройствах?

если я запустил lipo libCorePlot-CocoaTouch.a -info ответ консоли:

Архитектуры в толстом файле: libCorePlot-CocoaTouch.a: armv7 armv7s arm64

Но эта библиотека работает только с 32-битными устройствами / симулятором с 64-битным симулятором, дайте мне эту ошибку:

ld: warning: ignoring file PATH/libCorePlot-CocoaTouch.a, missing required architecture i386 in file PATH/libCorePlot-CocoaTouch.a (3 slices) Undefined symbols for architecture i386: "_CPTDecimalFromCGFloat", referenced from: -[HomeViewController configureSecondPlots] in HomeViewController.o -[HomeViewController configureSecondAxes] in HomeViewController.o "_CPTDecimalFromInteger", referenced from: -[HomeViewController configureSecondAxes] in HomeViewController.o "_OBJC_CLASS_$_CPTAxisLabel", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTColor", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTFill", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTGraphHostingView", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTMutableLineStyle", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTMutableTextStyle", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTPieChart", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTPlotSymbol", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTScatterPlot", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTTextLayer", referenced from: objc-class-ref in HomeViewController.o "_OBJC_CLASS_$_CPTXYGraph", referenced from: objc-class-ref in HomeViewController.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Как я могу исправить эту проблему?

Спасибо


person Tenaciousd93    schedule 16.01.2014    source источник
comment
Для работы в симуляторе универсальный бинарник должен содержать арки i386 (32 бит) и x86_64 (64 бит).   -  person Anil Varghese    schedule 16.01.2014
comment
Я создаю новую библиотеку, моя консоль говорит: lipo libCorePlot-CocoaTouch64.a -info Architectures in the fat file: libCorePlot-CocoaTouch64.a are: i386 x86_64, но она работает только в 64-битном симуляторе   -  person Tenaciousd93    schedule 16.01.2014


Ответы (2)


Объедините обе библиотеки и сделайте универсальный двоичный файл

lipo -create <simulator_lib>.a <device_lib>.a -output lib.a
person Anil Varghese    schedule 16.01.2014
comment
оно работает! :) Спасибо. Сейчас у меня lib 19 мб, сначала было 4,7 мб. Есть ли способ получить самый легкий? - person Tenaciousd93; 16.01.2014

Откройте проект iOS Core Plot (CorePlot-CocoaTouch.xcodeproj), обновите настройки сборки архитектуры, чтобы включить 64-разрядную версию, и создайте цель «Универсальная библиотека». Это создаст папку под названием «Release-universal» в папке сборки, содержащую универсальную библиотеку со всеми архитектурами (устройство и симулятор) и копии всех файлов заголовков.

person Eric Skroch    schedule 17.01.2014
comment
Спасибо за ответ, попробую ваше решение, как только у меня будет время. Спасибо:) - person Tenaciousd93; 20.01.2014
comment
Когда я это делаю, я все равно получаю сообщение об ошибке, например, неопределенные символы для архитектуры armv7s: _vDSP_minvD, на которую ссылается: у вас есть идея, почему? - person Yucel Bayram; 11.06.2014