我试图创建一个基本的OS X框架,现在我刚刚创建了一个测试框架:TestMacFramework.framework,我试图将它导入到一个全新的OS X应用程序项目。

我已经构建了.framework文件并将其导入到新项目中,框架链接正常,我可以引用我添加到框架构建阶段部分的公共头文件。

然而,当我尝试运行容器应用程序时,我得到以下错误:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

在谷歌了一下之后,我意识到我需要在我的容器应用程序构建阶段添加一个复制文件部分,所以我已经这样做了,并像这样设置它…

然而,我仍然得到运行时错误。显然我在这里做错了什么,但是苹果开发者库的资源引用了Xcode 2,所以不是很有帮助!

我错过了什么?

更新:

我可以在构建日志中看到我的TestMacFramework.framework被复制到.app contents/frameworks目录中,但它没有被安装到HD上的Library/ frameworks目录中

更新2:

如果我手动将TestMacFramework.framework复制到Library/Frameworks目录中,构建链接是正确的


当前回答

对我来说,由于某种原因xCode(到目前为止12.5)决定我的通知服务扩展目标不应该有正确的框架路径。我怀疑这发生在我从xCode 12.1更新到12.5之后。

所以我得到了与我的一个内部框架相关的相同错误。要解决这个问题,请执行以下操作:

go to Project's General Tab Select your target (in my case it was Notification Service Extension Target) Make sure that Framework and Libraries section contains your missing framework. I've left it Embed Without Signing in my NSE Target, but it is also was added with Embed & Sign to my primary app target Keep your target selected and switch to Build Settings tab There in a search bar enter LD_RUNPATH_SEARCH_PATHS (make sure that All possible settings will be displayed and not just Basic) You will see Runpath Search Paths and it was empty for me. Add 3 following values there: $(inherited) @executable_path/Frameworks @executable_path/../../Frameworks

这对我很有帮助。

其他回答

我认为没有固定的方法来解决这个问题,因为它可能是由不同的原因引起的。我上周也有这个问题,我不知道什么时候以及究竟是什么原因导致了这个问题,只有当我用Xcode在模拟器上运行它或试图将它安装到手机上时,它才会报告这种错误,但当我用react-native run-ios与终端运行它时,没有问题。

我检查了网上发布的所有方法,比如更新证书,更改Xcode中的设置(上面提到的所有方法),实际上Xcode中的所有设置都已经按照要求设置了,没有一种方法适合我。直到今天早上,当我删除吊舱并重新安装时,错误终于在一周后出现。如果你也在使用cocoapod,然后错误就出现了,没有任何特定的原因,也许你可以试试我的方法。

看看我的cocoapods版本。 如果有可用的新版本,请更新它。 转到项目文件夹,删除Podfile。锁,Pods文件,项目xcworkspace。 运行pod安装

当尝试Xcode 9测试版并返回到Xcode 8时,出现了问题。对目标进行简单的Clean就解决了这个问题。

这可能发生在Pod框架中。 我在AnswerBotProvidersSDK.framework中也遇到了同样的问题,我的错误是,我只在目标构建阶段设置运行脚本检查安装构建。

不正确的设置:

正确设置:

Xcode 11: 构建阶段->嵌入框架

[Xcode 11 +]

唯一要做的就是将框架添加到目标应用程序的General选项卡中的General->Frameworks, Libraries And Embedded Content部分。

确保你选择了“嵌入&签名”选项。

[Xcode v6 -> Xcode v10]

唯一要做的就是将框架添加到目标应用程序General选项卡的Embedded binaries部分。