J'ai construit ma propre bibliothèque statique C++, qui est construite avec les paramètres:
Le projet de bibliothèque se construit bien et j'ai obtenu le fichier .a (j'ai nettoyé le dossier de construction et reconstruit le projet pour être sûr que mes paramètres étaient efficaces).
J'ai ajouté la bibliothèque (fichier .a) à mon projet iOS, mais le projet ne se construira pas même si j'ai défini les mêmes paramètres exacts sur le projet iOS:
Je reçois toujours cette erreur:
ld: avertissement: ignorer le fichier /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib .a, le fichier a été construit pour l'archive qui n'est pas l'architecture liée (armv7s): /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 c'est exactement les paramètres avec lesquels j'ai construit la bibliothèque.
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.
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.
une note supplémentaire est:
Build Active Architectures Only set to no
est pour le projet lib.
J'ai exactement la même erreur avec les cocoapods: pour moi, la solution était d'avoir deux différentes architectures de construction active pour la cible et les pods.
Cible de l'application:
Build Active Architectures Only **Yes**
pods Target
Build Active Architectures Only **No**
malheureusement, tous ces conseils ne fonctionnent pas pour moi - Xcode 7.3.1 (7D1014), iPhone 5. mais dès que j'ai supprimé tous les fichiers temporaires Xcode (+ redémarrez Xcode) et reconstruit à nouveau, cela est devenu fonctionnel.
Cela m'est arrivé avec le SDK Facebook (v 4.24.0) utilisé via CocoaPods.
Le nettoyage ou la définition de Build Active Architectures Only
Sur NO
sur les pods n'a pas résolu le problème.
La solution était de vider le répertoire de construction (voir Paramètres de construction/Emplacements de construction/CONFIGURATION_BUILD_DIR) OR $(CONFIGURATION_BUILD_DIR)
Variable Xcode.
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.