xcode - 将框架与 XCode 中的应用程序捆绑在一起

标签 xcode frameworks

我是 XCode 新手。我正在尝试关注 these instructions .显然我遗漏了一些东西,因为虽然我可以看到我想要的框架已被复制到应用程序包中,但我无法引用它。

当我从我以外的机器启动应用程序时(或者如果我从/Library/Frameworks/中删除 OpenCV),我收到以下错误:

Dyld Error Message: Library not loaded: /Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV Referenced from: /Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/MacOS/ClipSplitter Reason: image not found



如果这有什么不同的话,我的系统上没有用户“大卫”。这也是从 Internet 下载的预构建 OpenCV。 ( Here’s a screenshot of the project 根据评论中的要求。)

最佳答案

构建 OpenCV.framework 后,它已配置为使用安装路径 /Users/david/Library/Frameworks/ .

由于您想将该库用作私有(private)框架(安装在 ClipSplitter.app/Contents/Frameworks/OpenCV.framework 的应用程序包装器中),因此您必须更改其安装路径。这可以使用终端轻松完成,如下所示:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV

当然你必须调整最后一个参数的路径。

现在,当链接您的应用程序时,您修改的框架会告诉链接器 dyld 必须在应用程序的应用程序包装器中搜索 OpenCV.framework(在 ClipSplitter.app/Contents/Frameworks 目录中)。

现在您必须将 OpenCV.framework 复制到您的应用程序包装器中。您可以通过添加复制文件构建阶段将其作为构建过程的一部分:右键单击您的目标,选择添加->新构建阶段->新复制文件构建阶段。从“目标”弹出窗口中选择“框架”并关闭对话框。

您的目标现在将包含一个新阶段,您可以通过从 Xcode 窗口左侧的项目导航器中拖动图标来添加 OpenCV.framework。请注意,Xcode 不允许您使用“+”按钮将文件夹添加到 Copy Files 阶段,因此为了复制框架,您必须拖放它。

关于xcode - 将框架与 XCode 中的应用程序捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621451/

相关文章:

xcode - 将 Swift 中 HTTP 请求返回的 NSData 转换为字符串

objective-c - 使用单元测试时 IB Designables 错误

objective-c - 应用程序包之外的应用程序引用框架

.net - Mono 的内部 LazyIinternalConnection 错误

iphone - 从 UIView 调用父方法

ios - 在 Swift 中声明全局变量

Swift 单元测试 : async

machine-learning - Infer.NET 与 ML.NET(微软机器学习框架)

java - 让 Struts 与 JSF 一起工作

c++ - 不需要预处理代码的 C++ 单元测试框架