Erreur "Undefined symbols for architecture i386"

Juste un petit mot pour parler de cette erreur de compilation qui arrive de temps en temps.

....... missing required architecture i386 in file
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_..........", referenced from:
      objc-class-ref in..........o
ld: symbol(s) not found for architecture i386


Quand cela se produit-il ? Cette erreur se produit à l'exécution dans le simulateur, généralement, après avoir inclus une bibliothèque d'un tiers ou que l'on tente d'exécuter un projet d'exemple récupéré sur internet.

Que se passe-t-il ? Il est fort probable que cela concerne une bibliothèque du projet qui a été compilée uniquement pour les devices iOS et donc sans support de l'architecture i386. Or l'architecture i386 est celle de notre Mac préféré, sur laquelle s'exécute le simulateur.

Et maintenant, quelle est la solution ?
Et bien, il y en a 2 :
- Le plus simple pour ne pas perdre de temps, c'est de tester le projet en l'exécutant directement sur votre iPhone. Pour tester un projet d'exemple cela suffit bien.
- Pour résoudre totalement le problème, et rendre fonctionnel le projet, il faut intégrer la version de bibliothèque compilée pour i386.

On peut toujours faire une demande à l'éditeur ; quelque fois, il vous communique un lien avec la version complète de la bibliothèque. Mais il ne faut pas perdre de vue que de toute façon, certaines fonctionnalités ne seront probablement pas testables sur le simulateur, comme la caméra pour ne citer qu'elle.
Previous
Next Post »