ios - Erreur: “Le fichier a été créé pour une archive qui n'est pas l'architecture reliée(armv7s)”




xcode static-libraries (5)

J'ai construit ma propre bibliothèque statique C ++, qui est construite avec les paramètres suivants:

  • Architectures: armv7, armv7s
  • Construire des architectures actives uniquement: Non
  • Plateformes de support: iOS
  • Architectures valides: armv7, armv7s

Le projet de bibliothèque est bien construit et j'ai obtenu le fichier .a (j'ai nettoyé le dossier de construction et construit à nouveau le projet pour m'assurer que mes paramètres étaient efficaces).

J'ai ajouté la bibliothèque (fichier .a) à mon projet iOS, mais le projet ne sera pas généré même si j'ai défini exactement les mêmes paramètres sur le projet iOS:

  • Architectures: armv7s, armv7
  • Construire des architectures actives uniquement: oui
  • Plateformes de support: iOS
  • Architectures valides: armv7, armv7s

Je continue à avoir cette erreur:

ld: warning: en ignorant le fichier / Users /hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libh : /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a

Qu'est-ce que je rate? Il me dit que le fichier .a n'a pas été construit pour armv7s, mais ce sont exactement les paramètres avec lesquels j'ai construit la bibliothèque.


Cela m'est arrivé avec le SDK de Facebook (version 4.24.0) utilisé via CocoaPods.

Nettoyer ou définir Build Active Architectures Only sur NO sur les pods n'a pas résolu le problème.

La solution consistait à vider le répertoire de construction (voir Paramètres de construction / Emplacements de construction / CONFIGURATION_BUILD_DIR) OU $(CONFIGURATION_BUILD_DIR) variable Xcode.


J'ai eu exactement la même erreur quand avec les cocapodes: Pour moi, la solution consistait à avoir deux architectures différentes, Build Active, pour la cible et les pods.

Cible de l'application:

Build Active Architectures Only  **Yes**

Cosses

Build Active Architectures Only  **No**

J'utilise XCode 5.1.1 et ai rencontré le problème décrit. Un moyen plus pratique de résoudre ce problème semble être simplement de créer une archive (via le menu Construire / Archiver) et de la distribuer. Le fichier lib distribué contiendra toutes les architectures définies.


Lorsque vous construisez une bibliothèque, vous devez la compiler à la fois pour le simulateur et le périphérique, puis fusionner les deux sorties (fichiers .a) dans une bibliothèque, puis la lier à votre projet iOS.


une note supplémentaire est:

    Build Active Architectures Only  set to no

est pour le projet lib.







armv7