自定义框架使用时出现“找不到图像”错误。

9
我为我的某个Cocoa应用程序创建了自己的框架。我将该框架添加到我的项目中,并调用了该框架中的一个方法。当我尝试运行该应用程序时,它崩溃了: 崩溃日志:
dyld: Library not loaded: @rpath/MMP.framework/Versions/A/MMP
  Referenced from: /Users/Midhun/Library/Developer/Xcode/DerivedData/MMPTest-ccvjtgedqkcftchapjehhwjbaqdq/Build/Products/Debug/MMPTest.app/Contents/MacOS/MMPTest
  Reason: image not found

我做了什么:

框架:

  • 我在公共部分添加了我的头文件。

公共头文件

  • 我添加了部署和链接的路径,像这样:

路径

  • 我构建了项目,我的框架已经准备好了(到此为止很酷)。

项目:

  • 我将该框架添加到项目根目录下的框架文件夹中。
  • 我在链接二进制库部分添加了该框架。
  • 我更改了链接路径,如下所示: 修改路径

平台细节:

Xcode: 4.6.2
OS X : 10.8

我尝试过的方法(在崩溃之后)

  • 当我遇到这个问题时,我用 otool 进行了检查。它显示的路径如下:

otool

但是我还没有解决这个问题。请帮帮我,提前致谢。


这个有帮助吗?https://dev59.com/6mkw5IYBdhLWcg3wkLb2 - trojanfoe
但是您没有遵循被接受的答案建议将安装名称保留为默认值。 - trojanfoe
@trojanfoe:如果我们更改安装目录和运行路径,它将自动更改安装名称(请检查我的图像:安装名称是默认的,XCode以粗体显示更改的值和普通字体显示默认值)。 - Midhun MP
你知道最后应用和框架被写到哪里了吗?我原本以为使用Xcode工作区会是一个更好的选择。 - trojanfoe
@trojanfoe:有什么方法可以将我的框架复制到我的二进制安装文件夹(Xcode衍生数据文件夹)中吗? - Midhun MP
显示剩余2条评论
2个回答

28

将框架安装目录设置为 @executable_path/../Frameworks

图片描述

现在在构建阶段中添加复制文件,将目的地设置为 Frameworks。点击你的目标,然后在编辑器(菜单栏)上 --> 添加构建阶段 --> 添加复制文件构建阶段

图片描述

图片描述


4
我的 XCode 中的菜单中,“添加复制文件构建阶段”选项是禁用的。 - Midhun MP
@MidhunMP 你是否选择了正确的目标,并点击了“Build Phases”选项卡? - Emmanuel
2
@MidhunMP 而且“Build Phases”选项卡被正确选择了吗?因为只有选择了正确的选项卡,“添加构建阶段”子菜单才会启用。 - Emmanuel
@MidhunMP 在Xcode 4中,选项在“编辑器”->“添加构建阶段”中。然后,“复制文件”构建阶段将出现在项目导航器中,您可以通过单击加号将内容添加到其中。 - Parag Bafna
偶尔我会忘记这一步。为此加1分。 - naz

3

我曾遇到相同的问题,以下是我的解决方法:

我使用的是自定义的Swift框架,而我的项目是Objective-C的。

按照以下步骤进行操作:

  1. 进入项目导航器
  2. 选择Targets,进入General选项卡
  3. Embedded Binaries中找到自定义框架,如下图所示enter image description here
  4. 检查是否将该框架添加到Linked Frameworks and Libraries中(参见下图)List item
  5. 注意:在我的情况下,它被添加到了Linked Frameworks and Libraries中,您需要将其删除
  6. 最后一步,在“Build settings”中找到标志Always embed swift embedded libraries并将其设置为“YES”(参见下图)

enter image description here

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接