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

Posted

技术标签:

【中文标题】使用自定义框架时出现“找不到图像”错误【英文标题】:"image not found" Error while using Custom FrameWork 【发布时间】:2013-12-04 06:22:06 【问题描述】:

我为我的一个可可应用程序创建了自己的框架。我将该框架添加到我的项目中,并从该框架中调用了一个方法。当我尝试运行我的应用程序时它崩溃了:

崩溃日志:

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

我做了什么:

框架:

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

我添加了 Deployment 和 Linking 的路径,比如:

我构建了项目,并准备好了我的框架(到此为止非常酷)。

项目:

我将该框架添加到我的项目根目录下的FrameWorks 文件夹中。 我在Link Binary With Libraries部分下添加了框架 我更改了链接路径,如:

平台详情:

Xcode: 4.6.2
OS X : 10.8

我的尝试(崩溃后)

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

我点击了这个链接:A Visual Guide to Creating an Embeddable Framework for Mac OSX

但是我还不能解决这个问题。请帮助我,提前谢谢。

【问题讨论】:

这有帮助吗? ***.com/questions/9798623/… @***foe:不,我首先尝试过,它对我不起作用。这就是我问这个问题的原因:) 但是您没有遵循已接受答案的建议,将 install name 保留为默认值。 @***foe:如果我们更改安装目录和运行路径,它会自动更改安装名称(请查看我的图片:安装名称是默认的,XCode 显示更改为粗体和默认值普通字体) 你知道应用程序和框架最终被写入哪里了吗?我原以为 xcode 工作区对于这类事情会是一个更好的选择。 【参考方案1】:

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

现在在构建阶段添加副本文件,将目标设置为Frameworks。点击你的target,然后点击Editor(菜单栏) --> Add build phase --> Add Copy Files Build Phase

【讨论】:

Add Copy Files Build Phase 我的 XCode 中禁用了菜单。 @MidhunMP 您是否选择了正确的目标,然后单击“构建阶段”选项卡? @MidhunMP 并且正确选择了“构建阶段”选项卡?因为“添加构建阶段”子菜单只有在您选择了正确的选项卡时才会启用。 @MidhunMP 在 Xcode 4 中,选项在 Editor->Add Build Phase 中。 Copy Files 构建阶段随后会出现在 Project Navigator 中,您可以通过单击加号向其中添加内容。 偶尔会忘记这一步。 1+为此。【参考方案2】:

我遇到了同样的问题,我就是这样解决的,

就我而言,自定义框架位于 Swift 中,而我的项目位于 Objective c

按照以下步骤,

    进入项目导航器 选择Targets,进入General标签 找到Embedded Binaries 拖动自定义框架。寻找流量 在下面提到的图像中 检查框架是否添加到链接框架和 库(参考图片) 注意:在我的例子中,它被添加到 Linked Frameworks and Libraries,请先删除它 最后一步,找到标志 始终嵌入 swift 嵌入式库 “构建设置”并将其设置为“是”(参考图片)

我希望这会有所帮助。

【讨论】:

以上是关于使用自定义框架时出现“找不到图像”错误的主要内容,如果未能解决你的问题,请参考以下文章

在类中使用自定义排序时出现编译错误 [重复]

使用 addCommand (webdriverio) 添加自定义命令时出现 ts 错误

Redux Form - 渲染以下自定义组件时出现错误?不知道为啥?

使用自定义比较器进行排序时出现运行时错误

尝试使用自定义图标创建 TabBarIOS 时出现不变违规错误

使用 WiX C#/.NET 4 自定义操作时出现错误 2896