2012-09-23 3 views
8

J'ai un projet qui utilise la bibliothèque zbar-sdk (une bibliothèque de codes à barres). Après la mise à jour de ma machine à xcode 4.5 et ios6sdk, j'ai quelques problèmes.xcode 4.5 - symboles introuvables pour l'architecture i386 (zbar)

J'ai été capable de construire sur le simulateur sans rien toucher à mon projet. Ceci utilise la dernière bibliothèque zbar 1.2. Je voulais ensuite construire sur mon périphérique ios6 pour tester, et c'est quand j'ai eu une erreur. Après quelques recherches sur le forum des développeurs zbar, j'ai vu que j'avais besoin de récupérer la source zbar et de construire le libzbar.a pour armv7 et armv7s car cela n'a pas encore été fait par le développeur zbar.

Voir - http://sourceforge.net/projects/zbar/forums/forum/1072195/topic/5728912

Je l'ai fait, réimportés la libzbar.a mis à jour dans mon projet. J'ai ensuite construit pour mon appareil, et cela a fonctionné! J'ai pu installer mon application sur mon appareil de test et la bibliothèque de codes à barres de zbar a bien fonctionné. Je pensais que c'était la fin de celui-ci, mais malheureusement pas. J'ai ensuite essayé de construire à nouveau sur le simulateur (ios6), et c'est quand il échoue.

Peu importe ce que je ne peux pas obtenir ce projet de construction pour l'appareil et simualtor en même temps et avec les mêmes paramètres :(

Mes libzbar.a paramètres du projet lors de la construction de mon propre fichier libzbar.a :

architecture: standard (ARMv7, armv7s) $ (ARCHS_STANDARD_32_BIT)

Construire l'architecture active uniquement: Non

Architectures valides: ARMv7 armv7s

Et mes paramètres du projet (pour myapp) comme:

architecture: Standard (ARMv7, armv7s) $ (ARCHS_STANDARD_32_BIT)

Construire l'architecture active uniquement: Non

Architectures valides: ARMv7 armv7s

SDK de base: iOS6

iOS déploiement Targ et: iOS 5.0

Et l'erreur en essayant de construire au simulateur:

ld: warning: ignoring file /Users/blah/iOS App/myapp/ZBarSDK/libzbar.a, missing required architecture i386 in file /Users/blah/iOS App/myapp/ZBarSDK/libzbar.a (2 slices) 
Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_ZBarReaderViewController", referenced from: 
     objc-class-ref in mycontroller.o 
    "_ZBarReaderControllerResults", referenced from: 
     -[mycontroller imagePickerController:didFinishPickingMediaWithInfo:] in mycontroller.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

J'ai essayé de peaufiner les paramètres du projet de libzbar.a (par exemple construire une architecture active définie sur "OUI") mais cela n'a pour résultat que le fonctionnement du simulateur ou du périphérique.

Le fait que cela fonctionne sur l'appareil mais pas sur le simulateur me fait penser à un étrange paramétrage de l'architecture/du projet.

Toute aide très appréciée!

Répondre

2

Je doute que ce soit le droit réponse, mais cela a fonctionné pour moi, je compilé la nouvelle libzber.a en utilisant les architectures: i386 ARMv6 armv7s ARMv7 dans cet ordre, vous devez également spécifier des architectures valides que les mêmes valeurs. Encore une fois c'est ce qui a fonctionné pour moi avec une version récente dont j'avais besoin pour sortir A.S.A.P. Les deux se trouvent dans Target -> Build Settings -> Architecures.

Notez également que $ (ARCHS_STANDARD_32_BIT) a dû être supprimé des paramètres.

1

J'ai corrigé un problème similaire en définissant l'architecture du simulateur iOS6 sous OTHER_LDFLAGS dans Target-> Build Settings.

j'oublié que j'ai eu un autre argument de ligne de commande pour archituctures séparés alors je devait indiquer manuellement le simulateur

+0

comment do u faire? –

Questions connexes