gpt4 book ai didi

cocoa - 嵌入式框架与 bundle 外部的版本冲突

转载 作者:行者123 更新时间:2023-12-03 18:02:17 28 4
gpt4 key购买 nike

我的一个 Mac 应用程序包含一个框架,我将其嵌入到应用程序包中。现在我发现一些证据表明,在某些客户计算机上,应用程序链接到位于/System/Library/Frameworks 文件夹中的同一框架。

在将嵌入式框架链接到 XCode 中的应用程序时,我显然遗漏了一些东西,所以这就是我的做法......也许您可以指出我缺少的步骤:

1)我将框架项目拖到我的项目中并设置两个项目之间的依赖关系2)我将框架项目的构建产品拖到目标的“Link Binary with Libraries”构建阶段3)我将框架项目的构建产品拖到目标的“复制框架文件”构建阶段,设置为“目标:框架”

这一切都很好,但我需要在某个地方指定我想要链接到框架的嵌入式版本,而不是系统上可能找到的任何框架版本。是否需要在某处设置搜索路径?或“静态”链接?

如有任何帮助,我们将不胜感激。

最诚挚的问候,

弗兰克

最佳答案

听起来您可能缺少一个关键步骤。您还需要设置嵌入式框架的“安装名称”

当您链接框架或动态库时,您的应用程序将在框架安装名称指定的路径中查找框架。这应该指定嵌入式框架的相对路径。如果它是绝对名称,即使您已经嵌入了该库,它也会选择系统安装的版本。

要检查安装名称,请执行以下操作并查看第一个位置。

otool -L <framework-binary>

这两篇博客文章解释了这个问题以及如何正确设置一切:

此外,如果您从命令行编译 dylib(例如开源库),只需将以下内容添加到 CFLAGS 中即可设置您的安装名称。

-install_name '@rpath'

如果您想修改现有二进制文件的安装名称,请使用“install_name_tool”。

还要确保您的复制文件构建阶段将正确的文件复制到应用程序包中的正确位置。

关于cocoa - 嵌入式框架与 bundle 外部的版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com