【问题标题】:Creating a Cocoa Framework创建一个 Cocoa 框架
【发布时间】:2011-02-26 02:05:17
【问题描述】:

我创建了一个我希望重新分发的工作 Cocoa 框架。然而问题是,它不会在 Xcode 之外运行。我读过一些关于@executable_path/../Frameworks 的内容,但我没有包括在内,因为我不知道该放在哪里:/

因此,我使用 DYLD_FRAMEWORK_PATH 变量在 Xcode 中运行我的应用程序,该变量运行良好,但仅在 Xcode 中 - 如果我尝试自行运行它,它会立即崩溃并显示 IMAGE NOT FOUND

我确定@executable_path/../Frameworks 是缺少的,但我不知道该放在哪里。

有人可以帮帮我吗? :)

谢谢

【问题讨论】:

  • 运行你的框架是什么意思?框架通常没有直接可执行的代码。另外,您是否阅读了框架编程指南? developer.apple.com/mac/library/documentation/MacOSX/Conceptual/… 或许只是略读一下就能给你答案。
  • 我当然读过。该框架已导入我的应用程序,但它在启动时崩溃。该指南还谈到设置@executable_path/../Frameworks,但我不知道那是在哪里。
  • 我尝试在项目设置中设置“安装目录”参数,但仍然失败。它仍然显示dyld: Library not loaded:Image not found
  • 谷歌搜索 @executable_path 得到这个:cocoadev.com/index.pl?MoreOnEmbeddingFrameworks
  • 是的,我遇到过这篇文章——虽然它很旧,但不是在 Xcode 上,而是在 Project Builder 上,所以界面不同。我确定它在 Xcode 中,因为它是 Project Builder 的继任者,但我无法在其中找到所需的参数。

标签: cocoa frameworks


【解决方案1】:

这是我通常的管理方式:

  1. 在框架的Xcode项目中,将安装目录设置为@rpath

  2. 将框架添加到应用程序的 Xcode 项目中。添加 Copy Files 构建阶段,在 Destination 弹出窗口中选择 Frameworks,并确保添加了框架,以便在构建时将其复制到应用程序的 Frameworks 目录中。

  3. 最后,在您的项目设置中,将@loader_path/../Frameworks 添加到运行路径搜索路径。

【讨论】:

  • 我认为它对 @executable_path 不满意 - 我在这里上传了运行日志的屏幕截图:web.me.com/david.schiefer/error.tiff
  • 如果你使用@rpath,就不需要@executable_path,所以我不确定你为什么会看到这个错误。
【解决方案2】:

您实际上是在将框架复制到您的应用程序包中吗?查找包含二进制文件的名为 MacOS 的文件夹。在同一级别应该有另一个名为 Frameworks 的文件夹,其中应该包含框架。

如果不存在,您需要为将框架复制到 Frameworks 文件夹的应用程序创建复制文件构建阶段。

【讨论】:

  • 点击“显示内容”时,我看到一个框架(里面有我的框架)、资源和 MacOS。
  • 好的,接下来就是找出应用程序认为它应该在哪里。打开终端会话,进入 MacOS 目录并在二进制文件上运行 otool -L
  • 首先想到的是您的链接过程中存在错误配置。 @executablepath/../Frameworks 不是库或框架。引用应该是您的实际框架,而不是包含它的文件夹。
  • 您发布的 tiff 中的所有其他框架都为您提供了路径末尾应该是什么样子的示例。
  • 我已经尝试更改路径,但现在它不再应用它 - 即使在清理项目之后,它仍然使用 /../Frameworks 作为它的路径:S 这让我坚果...:P
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2014-07-25
  • 2016-05-04
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 2016-06-25
  • 2014-11-17
相关资源
最近更新 更多