iOS 4 application se bloque au démarrage sur iOS 3.1.3: Symbole non trouvé: __NSConcreteStackBlock
Je suis sous Xcode 3.2.3 avec le SDK iOS 4.0. J'ai construit mon application avec Base SDK = iphoneos4.0, Active SDK = iphoneos4.0, le Déploiement Target = 3.1.3, et l'Architecture = standard (arm6 arm7). Compilateur = GCC 4.2. Si je comprends bien, ce est la bonne façon de construire une application pour iOS 4 et 3.
L'app fonctionne très bien sur les appareils équipés d'iOS 4. Mais il bloque au démarrage lorsque vous essayez de l'exécuter sur un appareil avec iOS 3.1.3 (un iPod Touch 1G):
dyld: Symbol not found: __NSConcreteStackBlock
Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Expected in: /usr/lib/libSystem.B.dylib
Il semble être un problème assez "bas niveau" liées de manière dynamique de la bibliothèque, AVANT que ma fonction main() obtient même appelé. J'ai même essayé de re-démarrage de l'appareil, etc., avec pas de chance. Voici une partie de la la de crash:
Process: MyApp [60]
Path: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2010-07-22 17:16:17.942 -0400
OS Version: iPhone OS 3.1.3 (7E18)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000001, 0xe7ffdefe
Crashed Thread: 0
Dyld Error Message:
Symbol not found: __NSConcreteStackBlock
Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Expected in: /usr/lib/libSystem.B.dylib
Dyld Version: 149
Binary Images:
0x1000 - 0x80fff +MyApp armv6 <d5f0ff6f233b4b034c222c16438c88d9> /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
0x2fe00000 - 0x2fe26fff dyld armv6 <544395a4b5546114b878d5131a84fd7f> /usr/lib/dyld
0x30410000 - 0x30536fff libSystem.B.dylib armv6 <0373fd64e915a17160732b29d343f95f> /usr/lib/libSystem.B.dylib
Merci pour les conseils!!!
- Êtes-vous à l'aide de toute l'iOS4 seulement des cadres (ils devraient être faibles liés)?
- Non, pas que je suis au courant. En fait, la dernière fois que l'application a été construit et testé avec SDK 3 et 3.1.3 de l'appareil, avant d'iOS 4 a même été publié. Je n'ai pas modifié le code ou les bibliothèques car alors-je suis juste en train de construire avec le SDK 4 pour la première fois et de tester sur iOS 4 + iOS 3.x.
Vous devez vous connecter pour publier un commentaire.
Ben Gottlieb a souligné, hier, que si vous utilisez des blocs de n'importe où dans votre application, vous verrez un accident similaire à ce sur une pré-4.0 OS lors de la construction avec le compilateur LLVM. Pour contourner ce problème, vous pouvez spécifier l'éditeur de liens drapeau
-weak-lSystem
dans votre Xcode paramètres de construction.Puisque la plupart de ces réponses sont spécifiques à Xcode 3.x, je voulais juste partager ce que j'ai fait pour résoudre ce avec Xcode 4.2.
Sous votre cible dans les "Phases de construction" dans l'onglet "Lien Binaire Avec les Bibliothèques de la section" j'ai ajouté "libSystem.dylib", et a fait facultatif. Cette correction du problème iOS 3.x appareils, tout en maintenant un soutien pour iOS 4.x et 5.0 appareils.
Si vous arrive d'être en utilisant la cocos2d bibliothèques, il est le moyen le plus propre pour ce faire, vous devez configurer le cocos2d cible de la cible de Déploiement à 3,0