【发布时间】:2011-03-19 19:58:36
【问题描述】:
我正在运行带有 iOS 4.0 SDK 的 Xcode 3.2.3。我使用 Base SDK = iphoneos4.0、Active SDK = iphoneos4.0、Deployment Target = 3.1.3 和 Architecture = standard (arm6 arm7) 构建了我的应用程序。编译器 = GCC 4.2。据我了解,这是构建适用于 iOS 4 和 3 的应用程序的正确方法。
该应用在运行 iOS 4 的设备上运行良好。但当您尝试在运行 iOS 3.1.3(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
在我的 main() 函数甚至被调用之前,这似乎是一个相当“低级”的动态链接库的问题。我什至尝试过重新启动设备等,但没有成功。以下是崩溃日志的一部分:
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
感谢您的建议!
【问题讨论】:
-
您是否在使用任何仅限 iOS4 的框架(它们应该是弱链接的)?
-
不,我不知道。事实上,上一次构建和测试应用程序是使用 SDK 3 和 3.1.3 设备——甚至在 iOS 4 发布之前。从那以后我没有更改任何代码或库——我只是第一次尝试使用 SDK 4 构建并在 iOS 4 + iOS 3.x 上进行测试。