【问题标题】:Linking to Framework链接到框架
【发布时间】:2012-11-18 23:03:32
【问题描述】:

我有许多框架链接到我的主项目,但由于某种原因,每当我在 Xcode 之外运行整个东西时,可执行文件根本找不到框架。

框架的动态安装路径设置为@loader_path/../Frameworks。我试过简单地放@rpath,但它也没有用。主可执行文件上的 Runpath Search Paths 为空。

有没有简单的调试方法?我想我已经浏览了所有关于框架链接的网站和博客文章,但没有任何帮助。

【问题讨论】:

  • 首先你必须知道你计划在运行时从哪里加载框架。你知道吗?
  • 我想从我的应用中加载它们?

标签: macos cocoa frameworks linker dyld


【解决方案1】:

例如,如果您有一个构建阶段,您可以将框架复制到您的应用程序包中……

在您的应用构建设置中.. Runpath 搜索路径 @executable_path/../Frameworks

在您的框架构建设置中.. 动态库安装名称 @rpath/$(EXECUTABLE_PATH)

(宏 $(EXECUTABLE_PATH) 应该扩展为 AFramework.framework/Versions/A/AFramework 之类的东西)

如果你弄错了,你的应用应该会在启动时崩溃。崩溃报告应该是这样的

Dyld Error Message:
  Library not loaded: @rpath/TestyFramework.framework/Versions/A/TestyFramework
  Referenced from: /path/to/TestyApp.app/Contents/MacOS/TestyApp
  Reason: image not found

这应该可以帮助您确定值应该是什么以及框架应该在哪里

在我的情况下,完整的运行路径搜索路径是..

/path/to/TestyApp.app/Contents/MacOS/TestyApp/../Frameworks

因此图书馆应该在..

/path/to/TestyApp.app/Contents/MacOS/TestyApp/../Frameworks/TestyFramework.framework

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 2013-03-23
    • 2011-11-15
    • 2011-02-07
    • 2012-08-11
    • 1970-01-01
    • 2017-11-26
    • 2022-12-30
    相关资源
    最近更新 更多