42 votes

Erreur: "Le fichier a été créé pour l'archive qui n'est pas l'architecture liée (armv7s)"

J'ai construit mon propre Statique de la Bibliothèque C++, qui est construit avec les paramètres:

  • Architectures: armv7, armv7s
  • Construire Active Architectures Uniquement: Non
  • Plateformes: iOS
  • Valide Architectures: armv7, armv7s

Le projet de bibliothèque s'appuie bien et j'ai eu l' .un fichier (j'ai nettoyé le dossier de création et construit le projet de nouveau pour être sûr que mes réglages sont efficaces).

J'ai ajouté de la bibliothèque (.un fichier) à mon iOS projet, mais le projet ne suffit pas à construire, même si j'ai mis exactement les mêmes paramètres sur l'iOS de projet:

  • Architectures: armv7s, armv7
  • Construire Active Architectures Uniquement: Oui
  • Plateformes: iOS
  • Valide Architectures: armv7, armv7s

Je reçois cette erreur:

ld: avertissement: le non-respect de fichier /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a, fichier a été construit pour les archives, qui n'est pas l'architecture d'être lié (armv7s): /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a

Ce qui me manque? Il me raconte la .un fichier n'a pas été construit pour armv7s, mais c'est exactement les paramètres que j'ai construit à la bibliothèque.

36voto

Buzzy Points 924

J'ai moi-même rencontré un problème similaire. La solution de @graver est définitivement valide.

Le problème était que la bibliothèque était en cours de construction pour armv7 au lieu de armv7s . Vous pouvez le vérifier vous-même en utilisant lipo <path/to/lib.a> -info .

La définition de l'option Build Active Architectures Only sur No résout le problème.

J'espère que cela t'aides.

33voto

graver Points 9920

Lorsque vous créez une bibliothèque, vous devez la compiler à la fois pour le simulateur et l'appareil, puis fusionner les deux sorties (fichiers .a) en 1 bibliothèque, puis la lier à votre projet iOS.

23voto

lbsweek Points 528

une note supplémentaire est:

     Build Active Architectures Only  set to no
 

est pour le projet lib.

0voto

boto Points 235

J'utilise XCode 5.1.1 et suis tombé sur 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 Build / Archive) et de la distribuer. Le fichier lib distribué contiendra toutes les architectures définies.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X