【问题标题】:embed a framework in bundle and link it在捆绑包中嵌入框架并链接它
【发布时间】:2019-11-16 13:40:35
【问题描述】:

我有一个 MacOS 应用程序,我在“嵌入式​​二进制文件”中添加了一个框架(我们称之为 A.framework,它是一个文件夹),它也显示在“链接框架和库”中。该项目编译并运行良好。

但是当我将应用程序包复制到另一台 MacBook 时,它没有运行并告诉我它找不到第二个框架(我们称之为 B.framework)来加载。 A.framework 使用绝对路径链接到 B.framework,因此即使我将安装名称更改为 A.framework,它仍然会使用绝对路径查找 B.framework。我有办法在A.framework 中更改它吗?我没有A.framework 的源代码。

我在二进制文件上使用了otool 工具,发现它没有在包中链接框架(包中嵌入了框架的副本)。链接器仍然指向通过“嵌入式二进制文件”路径设置的框架被复制到的位置,这是我的开发机器上的绝对路径。

如何使它指向包内的B.framework?

谢谢!

【问题讨论】:

  • 您需要更好地解释您是如何复制您的 app bundle 以及如何构建您的 app bundle。不知道这一点,很难帮助你。
  • 我发现 - 一个框架 (A) 使用绝对路径链接到另一个框架 (B)。所以即使我更改了 A 的安装名称,它仍然看起来是使用绝对路径的框架 B。有没有办法在框架 A 中改变它?我没有框架 A 的源代码。
  • 如何将其作为可接受的答案?非常感谢 Jvarela!
  • 我会将评论转为正式答案,但我认为您应该使用澄清问题的评论编辑您的问题,以便其他有相同问题的人可以从中受益。
  • 我编辑了您的问题以使其更清晰。让我们看看我的编辑是否被批准。很高兴我能帮上忙。

标签: xcode macos frameworks


【解决方案1】:

在您的开发人员工具中查找install_tool_path 并将-change 标志应用于A.framework,但我不确定这是否会破坏该框架的代码签名。无论如何,请阅读 doc.qt.io/archives/qt-5.11/osx-deployment.html。他们展示了如何使用此工具更改捆绑包中的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2015-08-02
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多