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

我刚刚下载了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 

只要你知道该项目仍然编译,并与Xcode 6testing版3运行良好。

大多数非常奇怪的问题可以用Clean&Build(或者重新启动Xcode)来解决。 你也可以考虑从〜/ Library / Developer / Xcode / DerivedData中删除相关文件夹。

肯定这个错误是非常无益的:

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

这当然只发生在设备上, 而不是模拟器上 。 总是在设备上testing的另一个好的理由。

无论如何,有同样的问题,一个干净的没有为我工作。 删除DerivedData也没有帮助。 还尝试同步部署目标版本。 这似乎没有什么区别,但我反正做了。

解决scheme是将任何dynamic框架添加到Target – > General下的Embedded Binaries设置:

设置嵌入式二进制

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

所以,举个例子,如果你有一个依赖于dynamic框架B的dynamic框架A ,那么就需要将AB添加到embedded式二进制文件中。

请注意,如果dynamic框架A依赖于任何静态库或框架,那么几乎肯定会被迫创buildA作为包含相关二进制文件的伞形框架。

其他考虑可能或可能不重要。 然而,亲自为我造就成功的人;

  • 检查器中每个dynamic库的path被设置为“相对于组”。 在上面的屏幕抓取embedded式二进制文件的path出现正确的"build/Debug-iphoneos"终止。

  • dynamic框架在embedded式二进制文件部分。 包含在框架中的静态库和静态库位于链接框架和库中。 两部分都没有出现。

在设置这个XCodeperformance奇怪。 以下certificate是成功的:

  1. 将dynamic框架添加到embedded式二进制文件中。
  2. 在左边的XCode组中find新的框架,并如前所述将path更新为“相对于组”
  3. 从embedded式二进制文件中删除dynamic框架。
  4. 再次将dynamic框架添加到embedded式二进制文件。 path现在应该显示正确。
  5. 从“链接的框架和库”部分中删除对dynamic框架的所有引用。

我刚刚尝试将自定义iOS框架链接到我的项目时出现此问题,因此对于任何有此问题的人来说,这是与复制文件构build阶段有关的。

我认为这个错误导致无法find文件。 因此,在项目的适当目标中创build一个复制文件构build阶段。 然后添加文件(在我的情况下是自定义框架)到这个阶段(如果它是一个框架,确保select“框架”的目的地)。

清理,重新启动,删除等没有为我工作。

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

在这里输入图像说明

几天后,我看到集装箱项目的部署目标是7.0 (如下所示)

在这里输入图像说明

另一方面, 包含的项目的部署目标是8.1 (如下所示)在这里输入图像说明

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

该项目在iOS 8设备上工作正常。

最近我遇到了这个问题,对我来说问题是我从“常规”部分的“embedded式二进制文件”中未列出的同一项目中添加了一个库。

注意:如果将其添加到embedded式二进制文件中,它也将添加到链接库部分,可能会添加同一个部分两次。

清理和构build将无法正常工作。 你需要删除他在〜/ Library / Caches / com.apple.dt.Xcode *目录下的caching。 删除这些并重build。

每次升级testing版时都要这样做。

我也面临同样的问题,并尝试了上面给出的所有解决scheme,没有任何运气。

那么我做了什么来解决,我真的没有太多的想法。 因此在Keychain Access的System组中有一个名为“ apple worldwide developer relations certification authority ”的authentication ,由于某些configuration文件和证书问题,我从“ Use System Defaults ”中随机地标记了这个证书“ Always trusted ”。 所以这导致了这个“ dyld_fatal_error ”崩溃。 当我恢复到“ 使用系统默认值 ”崩溃得到解决。 在这里输入图像说明 所以,如果你尝试所有可能的select来解决这个崩溃,并没有成功,那么你也试试这个。 它帮助了我,也可以帮助你。

find关于这个证书的这个。

这个问题在Xcode 7中仍然存在,并且可能会出于各种原因(看来)。 在我的情况下,与包含框架的iOS应用程序:

  1. 在模拟器上运行良好
  2. 给出了你在设备上描述的错误

答案是不使用链接库,而是一般下的embedded式二进制文件。

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

将非系统框架添加到主项目的常规选项卡中的“embedded式二进制文件”为我工作。

正如bitwit所述,这也会将您的框架添加到“链接的框架和库”,所以请注意这些重复。

用Xcode 7.3testing。

Xcode 8。

清理和构build不起作用。 我删除了caching,删除了派生数据。 之后,我的豆荚configuration被打破,所以我需要再次安装豆荚。 目标configuration被设置为一个非常古老的有效体系结构。 设置为armv7和armv7s,可以编译,没有问题

如果您的scheme在实际设备上运行时在诊断中启用了“保护边缘”,则会得到此信息。 “保护边缘”只能在模拟器中使用。

我正在使用cocoapods,当我更新部署目标iOS 8并添加了use_frameworks!时,也遇到了这个问题use_frameworks! 到我的Podfile 。 我能够通过将下面的行添加到我的Podfile来解决它:

link_with 'TargetName1', 'TargetName2', etc.

也可以使用ProjectName