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


76

我正在将我的应用程序从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)

屏幕截图已添加


使用哪些框架?您的设备上正在运行哪个iOS?
返回真实

@return true-iOS 8我的游戏中包含以下框架:UIKit,AdSupport,CoreGraphics,AudioToolbox,AVFoundation,CoreTelephony,MessageUI,SystemConfiguration,Accelerate,Foundation,SpriteKit。写下所有人:D
Stig Omdal


移至新的mac后出现了此问题。原因是缺少苹果WWDR中间证书。
Morten Holmgaard

在一个真实的设备中,我测试了所有方法,但没有得到答案,但是最后我从项目中删除了cocoaPod,然后再次重新安装它,问题解决了,我的应用程序在设备中运行了!这是删除的cocoaPod答案:stackoverflow.com/a/34765245/2201814
MHSFisher

Answers:


89

尝试将以下行添加到目标的“运行路径搜索路径”中。

@executable_path/Frameworks

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


53
在我的运行路径搜索路径中,我已经默认拥有它
SP Balu Kommuri 2015年

3
解决了!谢谢!我也建议您清理项目:shift + cmd + k
ric

就我而言,此错误是在我合并了创建“今日扩展”(窗口小部件)的另一个分支后发生的。合并冲突后,我合并的窗口小部件目标的运行路径已经以某种方式损坏,并且不包含正确的运行路径。回到合并前的小部件时,我注意到它具有以下两个运行路径:(@executable_path/Frameworks @executable_path/../../Frameworks除了$(CONFIGURATION_BUILD_DIR)
Sti 2016年

就我而言,我创建了两个目标,并添加了一个Swift文件,该文件创建了桥接头文件和一些配置,但是我仅将其标记为一个目标的成员。第一个目标可以正常工作,但第二个目标不能正常工作,我注意到生成设置的区别在于以下设置:运行路径搜索路径-> $(继承)和@ executable_path / Frameworks而且我还需要引用Objective-C桥接头之前创建的文件。添加这两个设置后,第二个目标开始正常工作。
迭戈·卡雷拉

50

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

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

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


3
嵌入式二进制文件!这似乎是我在这里看到的许多其他答案中缺少的关键
bitwit 2015年

引用我的“ SharedCode.framework”时发生了此问题。在应用程序Target> General>“ Embedded Binaries”中添加.framework解决了该问题。
Alphonse R. Dsouza

29

对我来说,有助于将Runpath Search Paths(不是目标)添加@executable_path/Frameworks项目中在此处输入图片说明 your_project->构建设置->链接-> Runpath搜索路径


15

其他解决方案均无济于事,但通过删除Xcode的Derived Data目录修复了所有问题。


是的,这对我有用。我以前只是删除特定项目的派生数据,但需要删除Xcode的派生数据文件夹。谢谢。
vikzilla 2015年

6
导出数据在哪里?
JW.ZG

2
可以在Xcode-> Preferences-> Locations中找到DerivedData目录,然后单击箭头将您带到目录
Caroline

13

哦,是的。我面临着将时间花在解决方案上的问题。您可以尝试在“构建设置”>“构建选项”下将“始终嵌入Swift标准库”设置为“是”。

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

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


2
谢谢,“((不要忘了之后
再按


10

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

这为我解决了这个问题!


1
对我有用,但是在将Always Embed Standard Swift Libraries设置为YES之后。需要干净的构建(shift + cmd + K)。
Saleh Enam Shohag

9

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

解决方案是更新到macOS 10.14.4

除非您安装了Swift 5 Runtime Support for Command Line Tools软件包,否则Swift命令行项目将无法在macOS 10.14.3及更早版本上运行。如果没有该软件包,Swift命令行项目将在启动时崩溃,并显示“ dyld:未加载库”错误。(46824656)

来自Xcode 10.2的Swift 5发行说明


这为我解决了。没有dlyd错误,甚至无法运行普通的命令行应用程序。
罗伯特·约瑟夫(RobertJoseph),

这也是我的解决方法。我在OS版本10.14.3的全新Swift项目(Hello World)中遇到此错误。升级到10.14.4并成功运行。
罗斯·塔伊瓦尔

7

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

解决方案: 我已经按照下面的步骤使用Xcode 9.3和11.0.1 iOS解决了这个问题:

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

在此处输入图片说明

  1. 设置总是嵌入斯威夫特标准库在您的构建设置。

  2. 在Build Phases> Embed frameworks中设置Subpath并选择destination作为您添加的框架的Framework,如屏幕快照所示。 在此处输入图片说明

希望它能帮助某人。


如果我们将框架设为可选,那么我们在代码中访问的框架类将为nil。您对此有什么解决方案吗?
Vijay

您能告诉我,您是如何获得此AirWatch SDK的吗?我有麻烦。这是我的问题:stackoverflow.com/questions/53023149/…–
Alex

谢谢!这是唯一对我有用的解决方案!+1
akdsouza

@akdsouza很高兴听到:)
Aashish1aug

5

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

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



3

我有同样的错误消息,那就是我如何解决的:

问题来自Xcode自动生成的证书。我不得不吊销这些证书,但这些证书是从developer.apple.com重新生成的

然后,解决方案是:-转到developer.apple.com/证书->撤消证书,或者进入Xcode>首选项>帐户>查看详细信息>选择Sigining身份>常规设置>撤消-转到developer.apple.com,然后按照说明生成新证书-在我项目的Xcode中:转到代码签名身份,并使用生成的证书对两个调试行进行签名-两个发布行均设置为“ iOS Developer”-然后进行项目> clean-在设备上构建并运行


3

@Saikiran的回答奏效了。

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

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


3

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


我尝试了到处讨论的所有可能的场景,但是似乎没有任何效果,我确信我使用的框架是基于不同的Swift版本构建的,但是我不确定是否是问题所在。我将尝试为较新版本的Swift构建框架,并在此处共享状态。
Faran Rasheed

我认为对我来说是这样-使用Xcode 9.2和使用Swift 4.1的框架,而该框架需要Xcode 9.3。
Fenix Voltres '18


2

以上解决方案均不适用于我。我更改了钥匙串中的iPhone开发人员证书信任设置。应该永远信任。将其更改为“使用系统默认值”。双击在钥匙串证书打开发现从选项画面博客


改变Use System Defaults为我也解决了这个问题。
Ngoan Nguyen

我的已经是“使用系统默认值”,但仍然无法使用
Stefan

1

我有相同的错误消息,这是我如何解决的问题:发生这种情况是因为我更改了包标识符,所以我只放了旧的包ID,它又开始工作了


1

我已经正确设置了“运行路径搜索路径”,但仍然无法正常运行。@Justin Domnitz的回答将我带到了正确的轨道:在目标的构建设置中将“始终嵌入Swift标准库”设置为“是”对我来说很成功。


1

似乎此问题是由Swift文件包含在Objective-C自定义框架中引起的。也不确定是否相关,但是我的应用程序目标也是在Objective-C中构建的。还可以在调试器中构建模拟器。尚未验证发布或归档版本。
另外,项目目标的运行路径搜索设置被设置为“ @ executable_path / Frameworks”,在框架的目标设置中它们被设置为“ @ executable_path / Frameworks”和“ @ loader_path / Frameworks”。

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



1

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


1

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

就我而言,我在主项目中创建了两个目标,并添加了一个Swift空文件,该文件创建了桥接头文件和一些配置,但是我仅将其标记为一个目标的成员。第一个目标可以正常工作,而第二个目标不能正常工作,我注意到生成设置的不同之处在于此设置:

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

而且我还需要引用Objective-C桥接标题到之前创建的文件:

Objective-C桥接标题-> pathTo/Target-Bridging-Header.h

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


1

尝试清理构建文件夹,我遇到了同样的问题,并且我通过以下方式解决了该问题:产品->清理构建文件夹



0

我尝试了很多上述情况,但似乎无法解决我的问题。我在项目中使用git和cocoapods,并且在进行新提交后错误就消失了。


0

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

此标志可防止将dyld插入越狱的电话中。当我删除此标志时,可以再次启动该应用程序。我不知道为什么它起作用。因为在iPhone se iOS 10中,我不必删除此行。但它确实在iPod touch iOS 9.3中起作用。因此,请检查您是否遇到与我一样的情况。


0

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

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.