dyld:未加载库:@ rpath / libswiftCore.dylib /找不到图像

问题描述 投票:70回答:27

我正在运行我的应用程序从xcode到我的iOS设备,我在iOS设备上得到这个和黑屏。

控制台文字:

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/10DB2FE8-EF09-4857-B4AC-0DB2E4419D6F/App-Name.app/App-Name           
Reason: image not found        
(lldb)

Screenshot added

ios swift xcode6
27个回答
86
投票

尝试将以下行添加到目标的Runpath搜索路径。

@executable_path/Frameworks

your_target - >构建设置 - >链接 - >运行路径搜索路径


5
投票

我修复了Xcode Derived Data目录中的所有内容:

〜/资源库/开发/ Xcode中/ DerivedData

祝你好运!


4
投票

就我而言,这个问题出现在Objective-c项目中,我正在使用Swift框架(AirWatch SDK)。

解决方案:我已经解决了Xcode 9.3和11.0.1 iOS的这个问题,如下所述:

  1. 将swift框架拖放到项目中,然后移动到项目的默认Framework文件夹中。
  2. 然后将其添加为嵌入式二进制文件,如屏幕截图所示。
  3. 将您的框架状态从Required更改为Optional,如屏幕截图所示。 (构建阶段>链接二进制文件库)

enter image description here

  1. 在构建设置中将Always Swed Swift标准库设置为Yes。
  2. 在Build Phases> Embed frameworks中设置Subpath并选择destination作为添加框架的Framework,如屏幕截图所示。 enter image description here

希望它会帮助某人。


3
投票

我有相同的错误信息,这就是我解决它的方式:

问题来自Xcode自动生成的证书。我不得不撤销这些证书,dans从developer.apple.com生成它们

解决方案是: - 转到developer.apple.com / certificates - >撤销证书或进入Xcode>首选项>帐户>查看详细信息>选择签名身份> clic setting whell> revoke - 得到developper.apple.com和按照说明生成新证书 - 在我的项目中的Xcode中:转到代码签名身份并使用生成的证书对两个Debug行进行签名 - 两个版本行都设置为“iOS Developer” - 然后项目> clean - 在设备上构建并运行


3
投票

@ Saikiran的回答是有效的。

我的证书是在iOS 8发布之前生成的。我撤销了所有证书并重新生成了所有配置文件,它立即解决了我的问题。

我没有足够的声誉来投票@Saikiran的答案,但这肯定有助于解决问题。


3
投票

当使用与当前正在使用的Swift版本不同的Swift版本的框架构建时,也会发生此错误消息,例如,如果你升级Xcode。


2
投票

我已经正确设置了Runpath搜索路径,但它仍然无法正常工作。 @Justin Domnitz的回答让我走上正轨:在我的目标构建设置中将“Always Embed Swift Standard Libraries”设置为Yes对我来说是个窍门。


2
投票

对我来说已经设定了选项

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

项目中的“是” - >“构建设置” - >“构建选项”

(通过Cocoapods的Namirial框架)


2
投票

上述解决方案均不适合我。我在Keychain中更改了iPhone Developer Certificate信任设置。它应该始终信任。将其更改为使用系统默认值。双击Keychain中的证书以打开从this博客发现的选项屏幕


1
投票

我有相同的错误消息,这就是我如何解决它:这是因为我改变了捆绑标识符,所以我只是把旧捆绑ID,它开始再次工作


1
投票

似乎这个问题是由于将Swift文件包含在objective-c自定义框架中引起的。还不确定是否相关,但我的应用目标也是在objective-c中构建的。还在调试中构建模拟器。尚未验证发布或存档版本。 此外,项目目标的Runpath Search设置被设置为“@ executable_path / Frameworks”,在它们被设置为的框架的目标设置中:“@ executable_path / Frameworks”和“@ loader_path / Frameworks”。

在尝试重建自定义框架并重新连接到应用程序目标,清除派生数据文件夹和其他一些建议之后,最终对我有用的是更改自定义框架项目(不是应用程序目标)的Project目标中的构建设置:“Always Embed Swift标准库“至”是“。似乎应用目标的设置设置为什么并不重要。我通过重置模拟器和重建来验证这一点。这与Daniele Ceglia的回答相似,但我无法添加评论并希望提供更多清晰度。


44
投票

我有同样的问题。我最终在以下位置添加了框架:

  1. General > Embedded Binaries
  2. General > Linked Frameworks and Libraries
  3. Build Phases > Link Binaries with Libraries

嵌入式二进制文件似乎是我的关键。


1
投票

对我来说清理项目解决问题!


1
投票

我也遇到了这样的问题所有其他方法都无法帮助我,所以我以愚蠢的方式完成了从头开始创建新项目和pod安装并确认它正常工作后,我复制了所有类文件和故事板文件,最后完成了!我认为这是它的最后一种方式,也许可以帮到你


1
投票

我在Objective-C项目中遇到了类似的问题,我开始包含Swift文件。

在我的例子中,我在主项目中创建了两个目标,并添加了一个Swift空文件,它创建了一个桥接头文件和一些配置,但我只将它标记为一个目标的成员。第一个目标正常工作,但第二个目标没有,我注意到构建设置的差异是这个设置:

Runpath搜索路径 - > $(inherited)@executable_path/Frameworks

我还需要将Objective-C Bridging Header引用到之前创建的文件:

Objective-C Bridging Header - > pathTo/Target-Bridging-Header.h

添加这两个设置后,第二个目标开始正常工作。


1
投票

尝试清理构建文件夹,我遇到了同样的问题,我这样解决了:产品 - >清理构建文件夹


0
投票

对于我重启模拟器解决了这个问题。


0
投票

我尝试了上面的一堆案例,似乎没有解决我的问题。我使用git和cocoapods作为项目,一旦我提交了新的提交,错误就消失了。


0
投票

我之前在iPod touch iOS 9.3中遇到过这个问题。我使用了这个post中提到的所有方法,但没有一个工作。我检查了我的项目设置。在另一个链接标志中,我发现我添加了-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null

此标志可防止在越狱手机中插入dyld。当我删除此标志时,可以再次启动该应用程序。我不确定它为什么有效。因为在iPhone iOS 10中我不必删除这一行。但它确实在iPod touch iOS 9.3中有效。如果你和我一样的情况,请检查一下。


0
投票

请检查* .framework是否存在_CodeSignature签名框架目录。如果没有_CodeSignature文件夹,请导航到Build Phases,单击+添加New Copy File Phase以创建Copy Files。之后,参考* .framework并选择Code Sign On Copy


29
投票

对我来说,有助于将@executable_path/Frameworks添加到项目Runpath搜索路径,而不是目标。 your_project - >构建设置 - >链接 - >运行路径搜索路径


14
投票

其他解决方案都没有帮助我,但是通过删除Xcode的Derived Data目录解决了所有问题。


11
投票

在使用Swift对象更新Obj-C嵌入式框架后,我不得不将“嵌入式内容包含Swift代码”切换为“是”以使我的Obj-C应用程序正常工作。


11
投票

哦,是的。我面临着在解决方案上花费数小时的问题。您可以尝试在Build Settings> Build Options下将“Always Embed Swift Standard Libraries”设置为“Yes”

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

(别忘了在你的项目之后转移+ cmd + K)


8
投票

在Framework Target(不是app目标)中,转到Build Settings> Build Options> Always Embed Standard Swift Libraries为YES。

这解决了我的问题!


6
投票

我在命令行项目中遇到此错误(Xcode 10.2和macOS 10.14.3)

解决方案是更新到macOS 10.14.4

除非您安装Swift 5运行时支持命令行工具包,否则Swift命令行项目将无法在macOS 10.14.3及更早版本上运行。如果没有该软件包,Swift命令行项目会在启动时因“dyld:Library not loaded”错误而崩溃。 (46824656)

来自Swift 5 Release Notes for Xcode 10.2


5
投票

我遇到了同样的问题,设置正确的代码符号标识解决了问题(Build settings-> Code Signing Identity)。

根据Apple技术问题“iOS 8发布后创建的所有企业版和标准iOS开发人员证书都在适当的位置使用新的团队ID字段以允许Swift语言应用程序运行”

© www.soinside.com 2019 - 2024. All rights reserved.