哪个是dyld`dyld_fatal_error的原因,这是iOS上不兼容的api?

时间:2012-04-26 00:06:33

标签: ios5 ios4 crash xcode4.2 automatic-ref-counting

我正在将部分项目移至iOS 5 / ARC。最古老的项目之一(iOS 4.2,支持iPod Touch 2g的armv6)给了我:

dyld`dyld_fatal_error:
0x8feb1070:  int3   
0x8feb1071:  nop    

在发布图像之后,但在进入主图像之前。必须将一些lib /代码更新到iOS 5,但哪一个?是否可以使用比猜测更好的方法?

6 个答案:

答案 0 :(得分:25)

在尝试使用Xcode4.3.2和SDK iOS5.1重现this project时遇到此问题。问题是Xcode4.3.2上的标准项目模板为iOS5配置,它具有早期iOS版本不支持的一些功能。就我而言,我的iPhone3G运行iOS4.2时,GLKit框架被拉入并且不受支持。我得到的错误就像你的错误:

dyld`dyld_fatal_error:
0x2fe01080:  trap   
0x2fe01084:  mov    r0, r0

仔细查看控制台输出后,您可以看到导致应用崩溃的原因:

dyld: Library not loaded: /System/Library/Frameworks/GLKit.framework/GLKit
Referenced from: /var/mobile/Applications/A60A53B1-F87D-467D-BB0B-82C603049202/HiJackInTheBox.app/HiJackInTheBox
  Reason: image not found
(lldb) 

该错误意味着在安装应用程序的目标上的iOS驻留程序中找不到GLKit框架。该框架正在Project-> BuildPhases-> LinkBinaryWithLibraries下进入构建。

所以要纠正这个问题,我需要删除GLKit框架和所有引用它的代码。然后构建成功并在目标设备上运行。希望这有帮助!

答案 1 :(得分:5)

如果你转到控制台输出,你会发错,告诉设备中缺少哪个框架并导致问题(比如grundyoso在他的回答中说)。

因此,为了解决此问题,您可以转到目标的常规标签,并在 嵌入式二进制文件 部分添加缺少的框架。< / p>

这会将框架复制到应用程序,以便在任何设备上都不会错过。

答案 2 :(得分:2)

我遇到了同样的问题,这种情况发生在我在iPhone 6s上运行应用程序时,它之前正在运行..

转到产品 - &gt;清洁并重新运行...

我希望这会有所帮助。

答案 3 :(得分:2)

我对Reachability.framework也有同样的问题。它适用于iPhone 5,但在运行相同的iPhone 7S Plus代码时,它会显示错误。

此问题的解决方案是:  1.转到常规 - &gt;嵌入式二进制文件  2.添加相同的框架(在我的案例中为Reachability.framework)  3.然后,在Linked Frameworks and Libraries中添加libc ++。tbd。

希望它适合你。

答案 4 :(得分:1)

当我使用iOS 4.2在iPhone 3GS上测试时,我的 xCode 4.3(基于cocos3d)项目遇到了同样的问题。

转到项目设置并更新:
目标(s) |摘要|链接的框架和库| GLKit.framework 可选
(而不是必需),然后再次测试。

在做出这个改变之后,现在一切似乎都很合适。

祝你好运!

答案 5 :(得分:0)

如果您使用的是Carthage,您可能忘记在“复制框架”中添加框架 转到目标 - &gt;构建阶段 - &gt;复制框架 - &gt;将框架添加到列表中。