2011-10-24 3 views
15

J'ai des bibliothèques statiques que j'ai construites pour les architectures armv7. Lorsque j'essaie de les utiliser dans un projet iOS que je teste sur le simulateur iphone 5.0, je reçois des erreurs me disant à propos de undefined symbols for architecture i386 dans mes bibliothèques statiques.Simulateur iOS sur mac fonctionne architecture i386, pas armv7?

Donc je suppose que cela signifie que le simulateur iphone veut que les bibliothèques soient compilées pour i386? Quel est le point du simulateur alors - pourquoi ne pas imiter l'architecture armv7 aussi bien?

Alors, la seule façon de tester mes bibliothèques statiques est de connecter un périphérique iOS physique et de l'exécuter?

Ou est-ce que je me suis trompé?

+0

Ce problème est pourquoi le projet Android utilise QEMU, un émulateur . C'est beaucoup plus lent que le simulateur iOS. –

Répondre

26

Donc je suppose que cela signifie que le simulateur d'iphone veut que les bibliothèques soient compilées pour i386? Quel est le point du simulateur alors - pourquoi ne pas le émuler également l'architecture armv7?

Vous avez répondu à votre propre question. C'est un simulateur , pas un émulateur . Par conséquent, il s'agit d'un programme Mac OSX s'exécutant sur l'architecture i386. Si vous compilez aussi vos bibliothèques statiques pour i386, vous pourrez les utiliser sur le simulateur.

9

Je ne suis pas très sûr mais i386 est pour Simulator et ARMv7 est pour Devices que vous avez connecté à votre machine.

4

Vous pouvez réellement compiler l'application via l'outil de ligne de commande Xcode en utilisant l'architecture i386 (il existe également un moyen de l'exécuter dans l'interface utilisateur de Xcode en modifiant les paramètres de construction).

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install 

Exécutez cette commande dans le répertoire contenant le fichier projectName.xcodeproj.

est ici une pause vers le bas du script:

-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1 
-arch i386 // Build your app using i386 architecture 
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid 
clean install // Clean all the builds then re-build and install 
+0

Merci, cela a fonctionné pour moi pour les nouvelles exigences sur Facebook Open Graph lors de la soumission des objets pour examen – estemendoza

0

Si vous voulez essayer des simulateurs avec i386 aller juste pour = < iPhone 5.

Questions connexes