Ios5 dyld`dyld\u致命错误(iOS上不兼容的api)的原因是什么?

Ios5 dyld`dyld\u致命错误(iOS上不兼容的api)的原因是什么?,ios5,ios4,crash,xcode4.2,automatic-ref-counting,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 在发布图像之后,但在进入主屏幕之前。必须有一些库/代码更新到iOS 5,但哪一个?有可能使用比猜测更好的方法吗?我自己尝试使用Xcode4.3.2和SDK iOS5.1来重现这个问题。问题在于Xcode4.3.2上的标准项目模板为

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

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

在发布图像之后,但在进入主屏幕之前。必须有一些库/代码更新到iOS 5,但哪一个?有可能使用比猜测更好的方法吗?

我自己尝试使用Xcode4.3.2和SDK iOS5.1来重现这个问题。问题在于Xcode4.3.2上的标准项目模板为iOS5配置,而iOS5具有一些早期iOS版本不支持的功能。在我的例子中,GLKit框架被引入,在运行iOS4.2的iPhone3G上不受支持。我得到的错误和你的一样:

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框架和所有引用它的代码。然后生成成功并在目标设备上运行。希望这有帮助

当我在iOS 4.2的iPhone3GS上测试时,我的xCode 4.3(基于cocos3d的)项目也遇到了同样的问题

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

在做出这一改变之后,我现在觉得一切都很好


祝你好运

看起来您的主要目标正在链接到XCTest.framework,但失败了

1) 转到项目设置->2)转到应用程序主目标->其他链接器标志3)删除“-framework XCTest”4)确保测试目标的“其他链接器标志”字段仍然包含“-framework XCTest”

2) 检查Images.xcsets和其他资源,在文件检查器(右面板)中,查看“目标成员资格”,检查是否选择了测试目标

3) 尝试在项目中搜索XCTest,看看您设置了什么


尝试删除测试

我也遇到了同样的问题,这发生在我在iPhone 6s上运行应用程序时,之前它还可以工作

只需进入产品->清洁,然后重新运行它

我希望这有帮助

如果您转到控制台输出,您将看到一个错误,告诉您设备中缺少了哪个框架并导致了问题(如Grundyso在回答中所说)

因此,为了解决这个问题,您可以转到目标的General选项卡,并在Embedded Binaries部分添加缺少的框架


这将把框架复制到应用程序中,因此在任何设备上都不会丢失它。

如果您使用的是迦太基,您可能忘记了在“复制框架”中添加框架
转到目标->构建阶段->复制框架->将框架添加到列表中。

我对可达性有同样的问题。它在iPhone5上运行良好,但在iPhone7sPlus上运行相同的代码时,它显示了错误

这个问题的解决办法是: 1.转到常规->嵌入式二进制文件。 2.添加相同的框架(在我的例子中是Reachability.framework) 3.然后,在链接的框架和库中添加libc++.tbd


希望它对您有用。

是的,我确认在IOS 4设备中使用IOS5不兼容的库/调用时会发生这种情况。您如何看到库未加载消息?我收到相同的错误,但找不到可读的消息。它位于控制台输出窗口中。您可以筛选“dyld”字符串,看看这是否有助于定位它。