首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在iOS 3.1.3上启动时iOS 4应用程序崩溃:找不到符号:__NSConcreteStackBlock

在iOS 3.1.3上启动时iOS 4应用程序崩溃:找不到符号:__NSConcreteStackBlock
EN

Stack Overflow用户
提问于 2010-07-23 05:48:44
回答 3查看 16.2K关注 0票数 46

我使用的是Xcode3.2.3和iOS 4.0SDK。我用基础SDK = iphoneos4.0、活动SDK = iphoneos4.0、部署目标= 3.1.3和架构=标准(arm6 arm7)构建了我的应用程序。编译器= GCC 4.2。据我所知,这是为iOS 4和3构建应用程序的正确方法。

这款应用在运行iOS 4的设备上运行良好。但当你试图在装有iOS 3.1.3 ( iPod Touch 1G)的设备上运行它时,它会在启动时崩溃:

代码语言:javascript
复制
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

在调用main()函数之前,这似乎是一个相当“低级”的动态链接库的问题。我甚至尝试过重新启动设备,等等,但都没有成功。以下是崩溃日志的一部分:

代码语言:javascript
复制
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

谢谢你的建议!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-23 06:39:31

Ben Gottlieb昨天指出,如果你在应用程序中的任何地方使用块,当使用LLVM编译器构建时,你会在4.0之前的操作系统上看到类似的崩溃。要解决这个问题,可以在Xcode构建设置中指定链接器标志-weak-lSystem

票数 85
EN

Stack Overflow用户

发布于 2011-11-03 02:42:23

由于大多数答案都是针对Xcode3.x的,所以我只想分享一下我在Xcode4.2中解决这个问题所做的工作。

在“链接二进制文件和库”部分的“构建阶段”选项卡中的目标下,我添加了"libSystem.dylib“并使其成为可选的。这修复了iOS 3.x设备的问题,同时保持对iOS 4.x和5.0设备的支持。

票数 18
EN

Stack Overflow用户

发布于 2010-11-30 19:31:53

如果您碰巧正在使用cocos2d库,那么有一种更简洁的方法可以做到这一点,您应该将cocos2d目标的部署目标配置为3.0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3313786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档