iphone iOS-le fichier a été construit pour les archives, ce qui n'est pas l'architecture liée(i386)




xcode linker (2)

Après avoir lutté avec ce même problème et en suivant toutes les réponses acceptées de mettre à jour les paramètres de construction, effacer le chemin de recherche de l'éditeur de liens, etc. J'ai finalement découvert une réponse qui a fonctionné pour moi.

Avant de construire, assurez-vous de sélectionner le bon type (iPhone Simulator) au lieu de iOS Device. Puis reconstruisez. Sinon, vous essayez d'utiliser une bibliothèque conçue pour un appareil iOS (processeur d'armement) sur un simulateur (i386). Ça aurait dû être évident, mais ça ne l'était pas.

Avant:

Après:

Maintenant, regardez dans le groupe Produits dans le navigateur> faites un clic droit sur votre bibliothèque statique (fichier .a)> Afficher dans le Finder, vous remarquerez que c'est dans un dossier Debug-iphonesimulator au lieu de Debug-iphoneos. Je n'ai pas fait attention au nom du dossier à l'origine, ou j'aurais pu y penser plus tôt.

J'espère que cela t'aides.

J'ai quelques bibliothèques statiques que je veux utiliser dans mon application iphone. Quand j'essaie de faire fonctionner le simulateur, j'ai des erreurs de liaison. Je suis nouveau dans le développement iOS, et j'ai rencontré ce problème lors de la liaison avec les bibliothèques que j'ai construites précédemment;

file was built for archive which is not the architecture being linked (i386)

Ce qui signifie que toutes les fonctions que je référence de ces bibliothèques me donnent ceci:

undefined symbols for architectyre i386

Je ne suis pas sûr de ce qu'il faut configurer pour que ce soit bien. Les bibliothèques statiques sont construites pour armv7, les plates-formes supportées armv6 armv7.


J'ai trié une erreur très similaire avec une bibliothèque statique que je construisais pour iPad. Je crois que ma solution était d'ajouter "i386" au paramètre Architectures pour le projet (Cliquez sur le Projet -> Paramètres de construction -> Architectures - ou était-ce des architectures valides?) Et cliquez sur l'icône '+', tapez "i386 "dans la ligne en surbrillance). Anywho cela devrait vous rapprocher.

Oh, une autre mise en garde, j'ai lu que nous devrions définir "Build Active Architecture Only" sur "No" également. C'était déjà réglé pour moi, mais c'est quelque chose que vous pourriez vouloir vérifier.





linker