dyld:未加载库:iOS8中的@rpath


72

我正在使用Xcode6和iOS8创建一个iOS框架。当我将其与iOS应用程序链接并尝试在设备上运行时,出现此错误

dyld: Library not loaded: @rpath/FrameworkName.framework/FrameworkName
  Referenced from: /private/var/mobile/Containers/Bundle/Application/0F2C2461-A68B-4ABA-A604-B88E6E9D1BB1/AppName.app/AppName
  Reason: image not found

框架的“运行路径搜索路径”构建设置默认设置为

'@executable_path/Frameworks', '@loader_path/Frameworks'

我找不到与此相关的任何文档。这是Xcode6的新功能,我希望它可以通过将框架简单地包含在任何需要它的应用程序中而起作用。


你应该创建框架为目标的项目开始。然后它将“正常工作”。
2015年

1
@Matt,为了供我们使用,我们需要将其保留为同一工作空间中的另一个项目。在这种情况下该怎么办?
ArdenDev

什么会做到这一点:做一个新的项目,该项目中做出新的框架目标。它可以构建并运行,所以现在我知道应用程序目标和框架目标都需要进行所有设置了。现在比较。:)
马特2015年

Answers:


76

为了使这项工作

  1. 在框架项目设置中,将安装目录从“ / Library / Frameworks”更改为“ @executable_path /../ Frameworks”

  2. 在包含此框架的项目中,添加一个复制文件阶段,然后将此框架复制到“ Frameworks”文件夹中。完成此操作后,请确保该框架在“嵌入式​​二进制文件”部分下列出。


3
感谢您的举报。我相信这将对其他人有价值...!
马特2015年

4
谢谢,第2步对我来说足够了。
M.Othman '16

我没有看过General-> Embedded Binaries。在那里也解决了我的问题。
亚当·门多萨

还要检查“构建设置”->“链接”->“动态库安装名称库”设置为@rpath。
加文

@AdamMendoza我做的与您在框架中提到的相同,但是我认为我的问题有所不同,因此,如果您有想法,可以回答此帖子:stackoverflow.com/questions/50384137/…–
Aleem,


11

我也遇到同样的问题,无法启动应用程序,并且应用程序崩溃并显示上述消息:

dyld:未加载库:@ rpath / FrameworkName.framework / FrameworkName引用自:/ private / var / mobile / Containers / Bundle / Application / xxxxxxxxxxxxxxxxxxx

原因:找不到图片

这是帮助我解决此错误的方法:

  1. 从常规选项卡

框架,库和嵌入式内容

  • 添加框架并确保将其嵌入并签名

常规选项卡

  1. 从构建阶段开始

依存关系

  • 向其添加框架

建造阶段


1
我无法在“构建阶段”->“依赖项”中添加框架。
Jaydeep Vyas

3
Embed&Sign可以解决问题。我不确定第二步是否必要,但谢谢您的回答,赞成!
卢卡斯

10

检查是否可以在上下文中找到框架:

构建阶段>嵌入框架>

如果不是这样,只需在项目目录的“框架”部分中添加该框架后,再在“嵌入框架”中添加该框架即可。
在此处输入图片说明


1
但是,如果您使用的是Fat框架,那么这不是一个好的解决方案,因为嵌入x86 slice将导致您上传到应用商店的操作失败。见stackoverflow.com/questions/30547283/...
Buddhisthead

9

通过CocoaPods安装的库上出现此错误。最终,为我解决了构建文件夹(cmd + option + shift + k),然后进行清理(cmd + shift + k)的工作。


同样在这里!非常感谢!
Xcoder

6

如果您正在使用迦太基

carthage update在终端上运行

转到项目设置->构建阶段->迦太基复制框架

输入文件中添加行: $(SRCROOT)/Carthage/Build/iOS/YOURLIBRARY.framework

将此行添加到输出文件: $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/YOURLIBRARY.framework


3

对我而言,这是因为SSL问题,我将我的开发人员的Mac(钥匙串)上的发行证书设置为其他项目之一的“始终信任”。我不得不将它们改回“使用系统默认值”。那对我有用!


2

使显示未加载的库在链接的二进制文件和框架中必需更改为可选。现在工作正常


1

除了上述解决方案,请在以下位置重新检查应用程序中包含的框架的路径

构建设置->搜索路径->框架搜索路径


1

我也遇到同样的问题,无法启动应用程序,并且应用程序崩溃并显示上述消息:

dyld:未加载库:@ rpath / FrameworkName.framework / FrameworkName引用自:/ private / var / mobile / Containers / Bundle / Application / xxxxxxxxxxxxxxxxxxx

原因:找不到图片

这是帮助我解决此错误的方法:

1.请从设备中删除您的应用,清理构建,然后重新构建并在设备上运行。

2.如果上述步骤对您没有帮助,请检查以下设置:
从“ TARGET”>“构建设置”>“运行路径搜索路径”,然后检查值“ $(继承)”和“ @ executable_path / Frameworks” ,如果它们不存在,请随意添加。

构建您的应用并在设备上运行


1

当这些解决方案都不起作用时:

  1. (可选)从此处获得有关不同搜索路径类型的清晰知识
  2. 确保.framework在中添加了文件路径Build Settings -> Framework Search Paths。您可以将所有框架文件保留在某处,App/libs/并添加此文件夹并递归启用。
  3. 确保.a在中添加了文件路径Build Settings -> Library Search Paths

在此处输入图片说明


0

我使用Cocoapods安装了第三方库。遇到了同样的错误,尝试了一切,但终于意识到我还没有use_frameworks!在我的pod文件中。

因此删除了当前安装的库,添加了use_frameworks!在pod文件中排成一行,重新安装了库,所有这些都对我有用。

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.