Undefined symbols for architecture x86_64

Hello,


Je rencontre ce genre d'erreurs lorsque j'exécute un projet intégrant ma librairie sur le simulateur:



"_OBJC_CLASS_$_aClass", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_bClass", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Pourtant dans mon projet voici la config:



Architectures : $(ARCHS_STANDARD)
Valid architectures : arm64 armv7 armv7s

Et ma lib:



Architectures : $(ARCHS_STANDARD)
Valid architectures : arm64 armv7 armv7s i386

Une idée pour que ça s'exécute bien?


Pour l'instant j'ai contourné le problème avec:



Build Active Archutecture Only : No

Mais plutôt que contourner, j'aimerais corriger :)


Réponses

  • x86 c'est i386, il manquerait pas i386 à  ton projet ? (pour le simulateur du coup)


  • Non, quand je fais:



    lipo -info libName.a

    J'ai bien i386


  • Non mais ta lib est ok, le problème c'est le projet. Si t'enlève i386 des architectures de ta lib, ca passe ?


  • Joanna CarterJoanna Carter Membre, Modérateur

    x86_64 n'est pas la même chose que i386. Il faut l'ajouter au lib.


  • Ah oui exact




  • x86_64 n'est pas la même chose que i386. Il faut l'ajouter au lib.




     


    Merci Joanna,


    Mais j'ajoute x86_64 à  Architectures ou Valid Architectures?

  • Joanna CarterJoanna Carter Membre, Modérateur

    Je crois que ça dépend sur si tu utilises Build Active Architecture Only oui ou non. Mais je ne sais pas ; on ne peut qu'essayer.


  • Idéalement je voudrais que Build Active Architecture Only soit à  YES en debug.

    Seulement quand je fais la lipo, pour le simulateur seul i386 est intégré.


  • Bon ce que j'ai fait:


    J'ai ajouté x86_64 à  Valid Archs et dans mon script de build j'ai ajouter à  mon xcode_build : ONLY_ACTIVE_ARCH=NO \


Connectez-vous ou Inscrivez-vous pour répondre.