捆绑框架与XCode中的应用程序

时间:2009-10-25 17:20:41

标签: xcode frameworks

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

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

  

Dyld错误消息:库没有   加载:   /Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV   参考自:   /Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/MacOS/ClipSplitter   原因:未找到图像

如果这有任何区别,我的系统上没有用户“david”。这也是从互联网上下载的预建OpenCV。 (Here’s a screenshot of the project根据评论的要求。)

3 个答案:

答案 0 :(得分:29)

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

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

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

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

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

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

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

答案 1 :(得分:6)

您需要将构建设置“安装目录”设置为@executable_path/../Frameworks

请参阅https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

中有关在应用程序包中嵌入私有框架的章节

此致

答案 2 :(得分:2)

使用Xcode 5,您可以使用应用程序目标的Build Phases面板进行此操作。

此面板的默认外观为

复制文件下的“+”按钮,您可以将框架添加为文件,将其复制到应用包中的Frameworks中。

现在,在构建时,您的Framework将被复制到您的包中。

相关问题