代码之家  ›  专栏  ›  技术社区  ›  Gareth Simpson

Xcode中的应用捆绑框架

  •  21
  • Gareth Simpson  · 技术社区  · 15 年前

    我是一个Xcode新手。我正努力跟随 these instructions . 很明显,我遗漏了一些东西,因为虽然我可以看到我想要的框架已经被复制到应用程序包中,但是我不能引用它。

    当我从我的机器之外启动应用程序(或者如果我从/library/frameworks/中删除opencv),我会得到以下错误:

    DYLD错误消息:库不是 加载: /用户/david/library/frameworks/opencv.framework/versions/a/opencv 引用自: /用户/g/demo/slates/clipslitter/build/release/clipslitter.app/contents/macos/clipslitter 原因:找不到图像

    我的系统上没有用户“david”,如果这有什么区别的话。此外,这是一个从互联网下载的预建OpenCV。( Here’s a screenshot of the project 如评论要求。)

    3 回复  |  直到 7 年前
        1
  •  29
  •   Nikolai Ruhe    11 年前

    构建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必须在应用程序的应用程序包装器(clipslitter.app/contents/frameworks目录)中搜索opencv.framework。

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

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

        2
  •  6
  •   burito    7 年前

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

    请参阅有关在应用程序包中嵌入私有框架的章节 https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

    当做

        3
  •  2
  •   james_womack    11 年前

    使用xcode 5,可以使用 Build Phases 应用程序目标的面板。

    此面板的默认外观为

    按下下面的“+”按钮 拷贝文件 ,您可以将框架添加为一个文件,该文件将被复制到应用程序包中的框架中。

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