dyld:库未加载:@ rpath / libswift_stdlib_core.dylib


205

将Swift类添加到旧的Xcode项目后,出现此错误。

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

如何使项目再次运行?


您可能还需要查看stackoverflow.com/questions/38364320 ,其中显示了如何使用otool
Jim Hayes

2017年-令人难以置信的是,仅重启Xcode就为我解决了这个令人毛骨悚然的问题。
Fattie

Answers:


152

对我来说,以前的解决方案都不起作用。我们发现ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES在构建设置中有一个标志(在早期版本中:“嵌入式内容包含Swift代码”)需要设置为YES。默认情况下是NO!


这也为我修复了它,我将扩展名的设置切换为true。该项目是objc,但是扩展很迅速,而且从一开始就没有正确执行
Cristi Băluță 2014年

这也是我的决议。我有一个现有的iOS应用程序项目(ObjC),我要向其中添加“今日扩展”(项目中的新目标,扩展名是主应用程序的插件)。我必须进入应用程序目标设置并启用“构建设置”和“中提琴...”问题。很有道理,但是考虑到Xcode 6.0为您自动配置了多少其他东西,可惜这个基本选项被忽略了。
hsoi 2014年

这解决了我的问题-我们有一个包含很多ObjC的旧项目,我们最近开始向其中添加Swift。即使IPA已构建并包含Swift库,但在检查了此构建设置并且我们进行了新的IPA之前,它在某些iOS7设备上均不起作用。这适用于我们所有有问题的设备。
肯德尔·赫尔姆斯特·盖尔纳

1
除此之外,没有任何工作。你是一个怪异的巫师,我的好先生!
里奇·哈特曼

2
嵌入式内容包含不推荐使用的Swift代码ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta 2016年

91

如果在将Objective-C项目转换为开始使用Swift的过程中出了点问题,则会发生此错误。问题是链接器构建设置从未正确配置,因此您必须手工完成。查找“运行路径搜索路径”构建设置并将其设置为:

$(inherited) @executable_path/Frameworks

enter image description here

编辑:我还应该补充一点,这些错误的出现是由其他完全由其他原因引起的-苹果公司对Swift本身进行了更改,从Xcode 6.1或6.1.1开始。唯一的解决方案似乎是退出Xcode,在Keychain Access中销毁证书,转到会员中心并删除所有证书和配置文件(商店中应用程序的配置文件除外-您无法删除它们),然后启动从头开始的整个证书申请过程。


3
为我工作。升级到最新的Xcode版本,并发现我项目中的此设置路径导致了旧版本。
ObjectiveTC

1
工作了!你救了我的一天!我在xcode 6 GM的目标C中使用了快速的GitHub控件。谢谢。
imthegiga 2014年

1
这也为我工作。没有重新启动Xcode。
Dan Loewenherz 2014年

1
为我工作。顺便说一句,我在错误消息的末尾得到了“原因:找不到图片”。
彼得周

2
感谢上帝!在那里!
BoilingLime 2015年

79

我不太确定为什么这个问题会被否决,当我第一次尝试在现有项目中使用Swift时,我也遇到了这个问题。Xcode重新启动也为我解决了这个问题。


20
我正在尝试在新的iOS项目中使用swift,尝试在iOS 8设备(而非模拟器)上运行时遇到该错误。重新启动Xcode,我的笔记本电脑或手机无法解决该问题。还有其他解决方案吗?
David Skrundz 2014年

2
不幸的是,在Beta 4下,这对我不起作用,试图启动使用基于Swift框架的Mac应用程序。
Craig Otis 2014年

请在答案中包含@Developer链接,因为它确实有帮助。
Lachezar Todorov 2015年

试试这个,但也要扔干净。
Scott McKenzie

55

我在这个问题上搜索了很长时间。有多个原因导致此问题。

如果面对Objectice C项目中的Swift代码/库时遇到问题,则应尝试解决方案1-2-3

如果您使用新的Swift项目解决方案4遇到此问题,则将是最合适的解决方案。

解决方案1:

重新启动Xcode,然后重新启动计算机和iPhone

解决方案2:

转到项目构建设置并进行设置Always Embed Swift Standard Libraries(以前Embedded Content Contains Swift Code)标志为YES

解决方案3:

转到项目构建设置并添加@executable_path/FrameworksRunpath Search Paths选项

解决方案4:

如果以上方法均无效,则应该这样做。如AirSign的帖子所述,苹果似乎是忍者补丁证书

在室内证书

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

他们添加了一个名为OU的新字段

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

所以您应该重新创建证书并进行配置


1
广告2:现在称为“ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”(请参阅​​下面的评论,已接受的答案)。
拉斐尔

1
我想添加... macOS项目需要@executable_path/../Frameworks在iOS项目需要它的地方..,中间没有。如果已将目标从一个操作系统转换到另一个操作系统,则更改此值很重要。
马特·加拉格尔

41

以我为例,我试图导入一个自定义框架,并收到类似的错误。原来,我不得不将框架导入到Embedded Binaries中,而不是导入到Linked Frameworks and Libraries中。

嵌入式二进制文件位于项目设置->->常规下


拯救了我的一天!太棒了!
克拉斯

1
当尝试使用以swift编写的编译框架(而不是将源文件嵌入为单独的目标)时,我看到了此错误。上面的解决方案也为我工作。
亚历克斯·弗朗卡

非常感谢,保存了我一整天。
Badrinath

1
在尝试将部分快速编写的框架链接到一个完全是目标C的旧项目中后为我工作。该设置实际上是在构建设置下的。此处的更多信息:stackoverflow.com/questions/24163870/…–
颗粒

可以确定,这是在目标设置下,而不是项目下。
2015年

16

对于在Adhoc / Enterprise发行版本中遇到此问题的开发人员,

从开发人员门户创建生产证书,然后重新生成分发配置文件。将它们下载并安装在Mac上。确保在Xcode构建设置中选择了正确的配置文件,然后重新构建应用。

资料来源:https : //devforums.apple.com/message/1022908#1022908


尽管此链接可以回答问题,但链接断开。因此,建议您包含链接中的关键部分。不建议仅链接的答案。
Pokechu22年

为我的企业应用程序工作。谢谢!
sylvanaar

15

解决方案5:

就我而言,应收账款答复中提到的所有解决方案都非常有用,但没有一个奏效。我通过在项目目标的“常规”部分的“嵌入式二进制文件”部分添加快速库解决了我的问题。也许是由于我在工作区中包含了我的swift框架?无论现在编译什么!准备好Swift,我在这里!


好的,那似乎行得通。我只是想为一个Swift项目编写一个Swift代码库。不知何故我仍然想知道这是否正确。但是,我为它的工作感到兴奋。
kpierce8 2014年

我已经将我的框架包括在“构建阶段”选项卡的“复制框架”部分中,但是此处无法选择一个框架。“常规”允许选择该其他框架,并将其添加到构建阶段,然后该应用将构建并运行。奇怪的是,我仍然可以在模拟器上运行该应用程序。
djbp 2015年

谢谢克里斯托夫。像您一样,已经尝试了所有解决方案,并且理解将快速库不能简单地拖到另一个项目显然是不直观的。您显然需要将库放入嵌入式部分(也更明确地说是快速模块,我怀疑是否可能还有其他类型的嵌入式内容)。即使Xcode可以很好地自动检测它并为我们完成工作...但这不是我们心爱的XCode的任务;),绝对是在这里浪费我们的时间...
Bonjour先生2016年

另外,如果库已在列表中,请确保将其标记为“嵌入并签名”。这解决了我的问题。
SquareBox '19

10

Xcode的简单重启为我解决了这个问题。


我要打个下个苹果狂迷,因为他是通过重置Windows来取笑的
乔什(Josh)


3

我有一个Obj-C项目,从这里开始添加快速的源文件。以下内容为我解决了此问题:

  1. 连结: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Swift编译器-代码生成: EMBEDDED CONTENT CONTAINS SWIFT = YES

我刚刚从模板Xcode 6.3创建了一个新项目,并将该项目设置与旧的原始项目进行了比较。


3

尝试按住Alt键,然后转到“产品”->“清理构建文件夹” ...

希望对别人有帮助。


这不能为问题提供答案。一旦您拥有足够的声誉,您就可以在任何帖子中发表评论;相反,请提供不需要问询者澄清的答案。- 评分
Rakete1111

尝试在旧项目中添加新类后发生。没有任何信息,有多老的项目。因此,清除项目并强制刷新缓存是有意义的。旧项目还意味着同时有可能更改证书,因为Apple Production和Developer证书每年都会过期。根据苹果技术问答,了解错误的主要原因。developer.apple.com/library/ios/qa/qa1886/_index.html。我也发生了同样的事情,“清理构建文件夹”使项目再次运行。让人们尝试..
stakahop

重新加载我的iOs证书后就发生了。一个简单的清洁(产品菜单),一切工作正常;-)
塞巴斯蒂安REMY

工作完美。谢谢。
iSofia

3

发生这种情况的原因很多。刚刚度过了一个愉快的周末,又发现了另一个导致此问题的原因(代码签名的顺序),我想创建一个汇总答案,将所有可能的解决方案结合在一起:

  1. 嵌入式内容包含Swift代码添加到项目。 如果您的应用程序包含Swift代码,则需要设置此标志。
  2. 清洁工程。除了“ 项目”>“清理”之外,您还可以删除DerivedDataBuild目录。在首选项下查找的位置DerivedDataBuild应该在您的项目文件夹中。
  3. 确保运行路径搜索路径包含@executable_path/Frameworks
  4. 确保您的证书在OU(组织单位)字段中包含您的Apple Team ID 会为您添加该,只需撤销您现有的分发证书并创建一个新的证书,然后下载,在KeyChain上安装,重新生成所有配置文件,下载并重建。
  5. Xcode重新启动。 如果一切基本都很好,但是Xcode还没有到那儿。

那是简单的东西。如果您正在执行自己的命令行构建,则可能正在创建自己的.ipa文件以进行上载。在这种情况下,您需要确保以下事项:

  1. 确保其中的Swift文件SwiftSupport/iphoneos的版本与中的版本相同。Contents/YourApp.app/Frameworks 因为Swift在两个版本之间尚不兼容,因此必须确保这些版本是构建应用所使用的版本。您可以在下找到这些库/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
  2. 签署库和框架第一。您需要首先codesign访问库和框架文件(Frameworks.app文件夹中),然后对整个.app树进行签名。该.app树必须使用entitlements.plist不是框架进行签名。

希望当Swift 3.0推出并且我们不再需要将Swift与我们的应用程序捆绑在一起时,整个问题都将消失。


2

我使用带有生产证书的Ad hoc(或企业)移动供应来解决此问题。切换到开发证书和mobileprovision解决了该问题。


4
这可能会让您在开发中运行该应用程序,但是如果临时或企业概要文件不起作用,您将如何进行部署?
克里斯托弗·约翰逊

2

我的项目是一个带有一些Objective-C类的Swift项目。使用旧的inHouse(企业)证书签名时,我遇到了同样的问题。

以下步骤为我解决了这个问题。

  1. 创建并使用新证书和移动供应。
    (请参阅AIRSIGN的博客
  2. Runpath Search Paths构建设置设置为:$(inherited) @executable_path/Frameworks
    (请参阅马特的答案

2

解决方案6:

在我们的案例中,企业发行证书已被撤销。生成新证书并更新配置文件可解决此问题。

(此错误似乎有多种不同的原因。希望这对某人有帮助。)


这解决了我的问题。神圣的废话试图解决这个问题真是浪费时间。我希望这可以解决其他用户的问题。我可以使用自定义框架调试应用程序,但无法在jenkins上运行构建计算机的版本。吊销我的发行证书并生成新的企业置备配置文件已为我修复了此构建。
cynistersix 2014年

2
这与解决方案4相同
2014年

2

我尝试了上面给出的所有答案,但没有任何效果。

更新到优胜美地后终于工作了


2

我也遇到过同样的问题,设置正确的代码签名身份可以解决此问题(构建设置->代码签名身份)。

按照Apple的技术问题: “在iOS 8发行后创建的所有企业和标准iOS开发人员证书的正确位置都有新的Team ID字段,以允许运行Swift语言应用程序”


2

如果您通过嵌入式二进制文件添加了三个框架,它们也将被添加到链接框架和库中。删除链接框架和库中的三个条目将解决此问题。

重新启动Xcode并重新启动Mac等魔术方法对我不起作用。


感谢您改进格式。看起来更好。“链接的框架和库”是一个部分,而不是两个部分。我将“和”更改为粗体。@巴特洛梅耶
Arbipher

特来hua fen zi shu bu ding
icemelon 2015年

2

将框架添加为“嵌入式二进制文件”,而不仅仅是“链接的框架和库”-修复了我的问题。

我还将嵌入式内容包含Swift代码标志设置为YES。


1

升级到最新版本的OS X(Yosemite)

经过数小时的反复试验,我终于解决了这个问题。 -当然适用于您的情况。

在将Mac OS X从Mavericks升级到优胜美地之前,我遇到了同样的问题。 -它解决了我的问题,希望它也解决了您的问题



1

通常,如果将此库添加到构建阶段中的“复制文件”部分中,该错误将消失。


这在XCode 7.2.1上对我有用。我在“构建阶段”面板中使用+,选择“新建复制文件阶段”,然后将框架从工作区树拖到“复制文件”部分。最后,我选择了“目标:框架”。全新构建后,我的应用程序按预期启动。
罗布·斯莫特郡

1

如果上述所有方法都没有帮助您,并且您真的感到沮丧,请尝试所有最好的技巧:Clean并且还要确保Clean Build Folder。:)希望它对某人有帮助!


1

这些解决方案似乎都不对我一直有效。在每两次成功运行之后,它将再次失败。对我来说,“嵌入的内容包含Swift代码”标志始终设置为YES。

原来我将Xcode设置为6.3兼容。将其更改回3.2兼容解决了它:


谢谢!我尝试了其他所有方法。我将其更改回3.2,清理了项目,重新启动了Xcode并成功运行
gabriellanata 2016年

1

我也有这个问题,只是没有找到libswiftXCTest.dylib

解决的办法是在中添加XCTest.framework到“测试”目标Build Phases/Link Binary with Library。即使在尝试构建主要目标时,我也收到此错误。


0

当我在旧项目中添加新的带有Swift语言的Today扩展目标时,就会显示出来。 通过将项目更新为推荐设置可以轻松修复。Xcode 6.0.1


0

使用Xaver 6.1.1的Mavericks,在装有iOS 8.1.1的iPhone5上进行测试时,我遇到了同样的问题。我尝试了所有可能的解决方案,包括新证书和配置文件,但没有任何帮助。我做的改变Embedded Content Contains Swift Code,并Runpath Search Paths都在项目水平和目标水平。

我现在已经安装了优胜美地,并且没有任何进一步的更改,它开始工作。


0

在这里,同样的问题,对我来说,是Crashlytics / Fabric / Beta / Twitter / Whatever-they-call-self自己上载了缺少嵌入式框架的二进制文件。如果我进行存档,然后以标准方式导出企业版本,则它们会发挥作用。


0

我的环境:Cocos2d 2.0,Box2d,Objective C

除了执行上面的其他答案外,我最终转到“常规”选项卡,并将“ WatchKit”设置为“可选”。

目标:常规:链接的框架和库:WatchKit.framework:可选


0

经过几个月又几个月的尝试,这里的一切……疯狂的定义……在一个新的Mac用户下启动Xcode为我解决了这个问题。

我删除了〜/ Library / Developer / *并重新安装了Xcode-,所以不知道还有什么其他格式可以使其工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.