Selon le tutoriel de Ray Wenderlich , j’ai fait ce qui suit:
Step 1 - J'ai téléchargé CorePlot_1.4.Zip sur le site officiel
Step 2 - J'ai ajouté à mon projet le dossier CorePlotHeaders et la bibliothèque static nommé libCorePlot-CocoaTouch.a (en vérifiant «Copier les éléments dans le groupe de destination»). dossier (si nécessaire) ”)
Step 3 -J'ai ajouté à Other Linker Flags field comme suit: -ObjC
Step 4 - J'ai vérifié dans Link Binary avec les bibliothèques si libCorePlot-CocoaTouch.a et QuartzCore étaient ici
Résultat: Lorsque je compile mon projet, tout fonctionne correctement lorsque j'utilise Iphone Retina (4-Inch). Mais lorsque j'utilise Iphone Retina (4 pouces 64 bits), le message suivant s'affiche lorsque j'essaie de créer et d'exécuter:
ld: warning: ignoring file /blah/blah/libCorePlot-CocoaTouch.a, missing required architecture x86_64 in file /blah/blah/libCorePlot-CocoaTouch.a (3 slices)
Voici le message complet:
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)
J'ai passé plusieurs heures sur cette question ... S'il vous plaît, aidez ...
Si vous souhaitez une version 64 bits de Core Plot, vous devez créer une nouvelle version de la bibliothèque statique. Les versions Arm64 requièrent iOS 7, mais Core Plot prenant également en charge les versions antérieures, la bibliothèque pré-construite est uniquement en 32 bits.
Ouvrez CorePlot-CocoaTouch.xcodeproj
et modifiez les paramètres d'architecture en "Architectures standard (y compris 64 bits)". Générez la cible "Universal Library" et incluez la bibliothèque statique résultante à la place de celle incluse dans Core Plot 1.4 ou utilisez plutôt la configuration de projet dépendante.
CorePlot a publié la version 1.5.1 pour fonctionner avec Xcode 5.1. Il vous suffit de copier le dossier CorePlotHeaders et le fichier libCorePlot-CocoaTouch.a dans votre projet.
Vous pouvez le télécharger depuis ici .
Essayer:
lipo -info libCorePlot-CocoaTouch.a
Cela montre que la bibliothèque est conçue pour armv7, armv7s et i386 (simulateur 32 bits), sans compter le simulateur 64 bits. Vous devrez construire la bibliothèque pour le simulateur 64 bits, puis utiliser lipo pour ajouter la bibliothèque 64 bits à libCorePlot-CocoaTouch.a.
Sortie:
Architectures in the fat file: libCorePlot-CocoaTouch.a are: armv7 armv7s i386
PS: Cela ne fonctionnera pas non plus sur l'iPhone 5S (pas d'arm64).
MODIFIER:
Voici les étapes à suivre pour produire un binaire contenant à la fois les architectures arm64 et x86_64:
changer le réglage de l'architecture de Xcode
Si vous ne voulez pas suivre le processus de téléchargement et de construction du projet, j'ai construit la bibliothèque universelle (pour armv7, armv7s et arm64) et l'affiche ici .
Ceci est construit à partir de l'identifiant de validation de coreplot cc0a18cef8915f4a11e0699e9429c0a2f0018b42.
J'ai eu les mêmes erreurs avec Xcode7.3 + CocoaPod. Et j'ai corrigé le problème avec Other Linker Flags = $ (hérité).
Bien entendu, ce paramètre est uniquement valide avec CocoaPod.
Si vous avez tout essayé mais que cela ne fonctionne toujours pas, essayez de définir -ObjC -lCorePlot-CocoaTouch sur 'Autres drapeaux de l'éditeur de liens' dans 'Paramètres de construction' ou votre cible de projet.
J'ai suivi le document officiel ' Utilisation de Core Plot dans une application ' dans Xcode 7.2.1 avec iOS SDK 9.2. J'ai eu la même erreur même si le .a supportait arm64, jusqu'à ce que j'ajoute l'indicateur d'éditeur de liens '-lCorePlot-CocoaTouch' en plus de '-OjbC'.