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

o.u*_*inn 40 swift xcode6

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

调用堆栈

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

断点

我得到的控制台错误是

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
Run Code Online (Sandbox Code Playgroud)

只是因为你知道该项目仍在编译,并且在Xcode 6 beta 3中运行良好.

jtb*_*des 75

像这样的极其奇怪的问题可以通过Clean&Build(或者重新启动Xcode)来解决.您也可以考虑从〜/ Library/Developer/Xcode/DerivedData中删除相关文件夹.

  • 是的!Clean + Build是解决方案! (5认同)
  • 对于任何面临类似问题的人,我想补充一点,这个问题可能与许多原因有关.在下面的答案中,描述了许多不同的事情可以解决这个问题,所以如果第一个解决方案不起作用,值得在下面检查.它们是:1.清理,2.手动删除文件夹,3.向嵌入式二进制文件添加框架,4.向复制阶段添加框架,5.更改部署目标,6.清理库缓存,7.证书问题等. (2认同)

Max*_*eod 25

确定这个错误非常无益:

dyld`dyld_fatal_error:
->  0x1200ad088 <+0>: brk    #0x3
Run Code Online (Sandbox Code Playgroud)

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

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

解决方案是在Target - > General下将任何动态框架添加到Embedded Binaries设置:

设置嵌入式二进制文件

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

因此,举例来说,如果你有一个动态的框架,一个是取决于动态的框架,那么它必须有一个加入到嵌入式二进制文件.

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

其他考虑因素可能重要,也可能不重要.然而,亲自为我做了成功的结果;

  • 检查器中每个动态库的路径都设置为"相对于组".在上面的屏幕抓取中,嵌入式二进制文件的路径显示正确终止"build/Debug-iphoneos".

  • 动态框架在嵌入式二进制文件部分中.作为框架包装的静态库和静态库位于链接框架和库中.两个部分都没有出现.

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

  1. 将动态框架添加到嵌入式二进制文件中.
  2. 在左侧的XCode组中查找新框架,并将路径更新为 "相对于组",如前所述.
  3. 从嵌入式二进制文件中删除动态框架.
  4. 再次将动态框架添加到嵌入式二进制文件中.该路径现在应该正确显示.
  5. 从"链接的框架和库"部分删除对动态框架的所有引用.

  • 我还发现外面转了三圈,随地吐痰有帮助 (2认同)

Rob*_*ers 17

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

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

  • 很棒的提示.这正是我所寻找的.显然,其他人正在寻找其他东西,但这对框架来说是必要的. (2认同)

Abd*_*Ali 9

清理,重新启动,删除等对我来说不起作用.

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

在此输入图像描述

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

在此输入图像描述

包含在另一方面项目,有的部署目标8.1 (因为可以看到下面). 在此输入图像描述

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

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


bit*_*wit 7

我最近遇到了这个问题,对我来说问题是我在同一个项目中添加了一个库,该库未在"常规"部分的"嵌入式二进制文件"中列出.

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


小智 5

清洁和构建将无法正常工作.您需要删除〜/ Library/Caches/com.apple.dt.Xcode*目录中的缓存.删除这些并重建.

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