使用swift更新到Xcode 6 beta 4后获取dyld_fatal_error

时间:2014-07-22 03:12:55

标签: swift xcode6

我刚刚下载了Xcode 6 beta 4,我的swift项目编译时没有任何错误,但在它到达我的代码之前,我在调用堆栈的开头就得到了一个dyld_fatal_error。

call stack

和一些带有nop指令的汇编代码中的断点

breakpoint

我得到的控制台错误是

dyld: lazy symbol binding failed: Symbol not found: __TFSsa6C_ARGVGVSs13UnsafePointerGS_VSs4Int8__
  Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/Sudoku
  Expected in: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/../Frameworks/libswift_stdlib_core.dylib

dyld: Symbol not found: __TFSsa6C_ARGVGVSs13UnsafePointerGS_VSs4Int8__
  Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/Sudoku
  Expected in: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/../Frameworks/libswift_stdlib_core.dylib

正因为如此,您知道该项目仍在编译,并且在Xcode 6 beta 3中运行良好。

12 个答案:

答案 0 :(得分:75)

这样的极其奇怪的问题可以通过Clean& amp;构建(或者重新启动Xcode)。您也可以考虑从〜/ Library / Developer / Xcode / DerivedData中删除相关文件夹。

答案 1 :(得分:25)

肯定这个错误非常无益:

dyld`dyld_fatal_error:
->  0x1200ad088 <+0>: brk    #0x3

这当然只发生在设备上,不是模拟器。始终在设备上进行测试的另一个好理由。

无论如何,遇到同样的问题,干净的对我来说没有用。删除DerivedData也没有帮助。还尝试同步部署目标版本。这似乎没有任何区别,但无论如何我都做了。

解决方案是将任何动态框架添加到Target - &gt;下的嵌入式二进制文件设置中。一般:

setting an embedded binary

现在我知道其他答案中已经提到了。但是,如果我可以补充说任何依赖动态框架也必须包括在内。

例如,如果你有一个依赖于动态框架 B 的动态框架 A ,那么 A 是必要的>和 B 已添加到嵌入式二进制文件中。

请注意,如果动态框架 A 依赖于任何静态库或框架,您几乎肯定会被迫创建 A 作为包含依赖二进制文件的伞形框架

其他考虑因素可能重要,也可能不重要。然而,亲自为我带来了成功;

  • 检查器中每个动态库的路径设置为&#34;相对    到集团&#34;。在屏幕上方抓住嵌入式二进制文件的路径    似乎正确终止于"build/Debug-iphoneos"

  • 动态框架位于嵌入式二进制文件部分。静态库和        作为框架包装的静态库位于Linked Frameworks中        和图书馆。 两个部分均未显示任何内容。

在设置这个时,XCode表现得很奇怪。以下证明是成功的:

  1. 将动态框架添加到嵌入式二进制文件中。
  2. 在左侧的XCode组中找到新框架并更新路径 &#34;相对于Group&#34; ,如前所述。
  3. 从嵌入式二进制文件中删除动态框架。
  4. 再次将动态框架添加到嵌入式二进制文件中。该路径现在应该正确显示。
  5. 从Linked Frameworks中删除对动态框架的所有引用 和图书馆部分。

答案 2 :(得分:17)

我在尝试将自定义iOS框架链接到我的项目时遇到了这个问题,因此对于那些遇到此问题的人来说,它与复制文件构建阶段有关。

我认为无法找到文件时会出现此错误。因此,在项目的相应目标中创建复制文件构建阶段。然后将文件(在我的情况下是自定义框架)添加到此阶段(如果它是框架,请确保选择&#39;框架&#39;目的地)。

答案 3 :(得分:9)

清理,重新启动,删除等对我没有用。

我有一个项目包含另一个项目。当我在iOS 7上运行项目并且在代码中访问包含项目时,应用程序停在以下行:

enter image description here

多天后,我看到容器项目的部署目标是 7.0 (如下所示)

enter image description here

另一方面,包含项目的部署目标为 8.1 (如下所示)enter image description here

包含的项目的部署目标更改为7.0解决了我的问题!

该项目在iOS 8设备上运行良好。

答案 4 :(得分:7)

我最近遇到过这个问题,问题在于我在同一个项目中添加了一个未列入“嵌入式二进制文件”的图书馆。来自&#39; General&#39;部分。

注意:如果您在嵌入式二进制文件中添加它,它也会添加到链接库部分,可能会添加相同的两次。

答案 5 :(得分:5)

清洁和建立不起作用。您需要删除〜/ Library / Caches / com.apple.dt.Xcode *目录中的缓存。删除这些并重建。

每次升级测试版时都这样做。

答案 6 :(得分:4)

我也遇到了同样的问题,并尝试了上面给出的所有解决方案而没有任何运气。

然后我做了什么来解决我真的没有太多我的想法。因此,在钥匙串访问系统组中有Certificated称为“苹果全球开发者关系证书颁发机构”,由于某些配置文件和证书问题,我随机标记此证书“始终信任”来自“使用系统默认值”。所以这导致了这次“dyld_fatal_error”崩溃。当我将其恢复为“使用系统默认值”时崩溃得到解决。 enter image description here 所以,如果您尝试了所有可能的选项来解决此崩溃并且尚未成功,请尝试这一点。它帮助了我,也可以帮助你。

找到关于此证书的this

答案 7 :(得分:1)

这个问题仍然出现在Xcode 7中,并且可能由于各种原因(似乎)发生。就我而言,iOS应用程序包含一个框架:

  1. 在模拟器上运行
  2. 给出了您在设备上描述的错误
  3. 答案是不使用链接库,而是使用通用下的嵌入式二进制文件。

    另见:https://stackoverflow.com/a/34052368/8047

答案 8 :(得分:1)

将非系统框架添加到&#34;嵌入式二进制文件&#34;在主项目的常规选项卡中为我工作。

正如bitwit所说,这也会将你的框架添加到&#34;链接框架和库#34;所以请注意那些重复项。

使用Xcode 7.3进行测试。

答案 9 :(得分:1)

Xcode 8.

清洁和构建不起作用。我删除了缓存,删除了Derived数据。之后,我的pods配置被破坏了,所以我需要再次安装pod。 Pods Target配置设置为非常古老的Valid架构。设置为armv7和armv7s,编译没问题

答案 10 :(得分:0)

如果您的方案在实际设备上运行时在诊断中启用了“Guard Edges”,则会得到此信息。 “Guard Edges”仅适用于模拟器。

答案 11 :(得分:0)

当我更新部署目标iOS 8并将use_frameworks!添加到Podfile时,我正在使用cocoapods并遇到此问题。我可以通过在Podfile添加以下行来修复它:

link_with 'TargetName1', 'TargetName2', etc.

也可以使用ProjectName