Cocoa 嵌入式框架与位于捆绑包外部的版本冲突

Cocoa 嵌入式框架与位于捆绑包外部的版本冲突,cocoa,xcode,macos,frameworks,Cocoa,Xcode,Macos,Frameworks,我的一个Mac应用程序包含一个我嵌入到应用程序包中的框架。现在,我发现一些证据表明,在一些客户机器上,应用程序链接与位于/System/Library/Frameworks文件夹中的相同框架相对应 在XCode中将嵌入式框架链接到应用程序时,我显然遗漏了一些东西,下面是我的做法。。也许你可以给我指出缺失的一步: 1) 我将框架项目拖到我的项目中,并设置两个项目之间的依赖关系 2) 我将框架项目的构建产品拖到目标的“使用库链接二进制文件”构建阶段 3) 我将框架项目的构建产品拖到目标集“Desti

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

在XCode中将嵌入式框架链接到应用程序时,我显然遗漏了一些东西,下面是我的做法。。也许你可以给我指出缺失的一步:

1) 我将框架项目拖到我的项目中,并设置两个项目之间的依赖关系 2) 我将框架项目的构建产品拖到目标的“使用库链接二进制文件”构建阶段 3) 我将框架项目的构建产品拖到目标集“Destination:Frameworks”的“Copy framework Files”构建阶段

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

任何帮助都将不胜感激

致以最良好的祝愿


弗兰克听起来你可能错过了关键的一步。您还需要设置嵌入式框架的“安装名称”

链接框架或动态库时,应用程序将在框架的安装名称指定的路径上查找框架。这应该为嵌入式框架指定一个相对路径。如果它是一个绝对名称,它将获取系统安装的版本,即使您嵌入了库

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

otool -L <framework-binary>
如果要修改现有二进制文件的安装名称,请使用“安装名称工具”


还要确保复制文件生成阶段正在将正确的文件复制到应用程序包中的正确位置。

谢谢。。很抱歉回复晚了。。看起来我的框架路径实际上设置正确(@executable\u path/。/Frameworks/BGHUDAppKit.framework/Versions/A/BGHUDAppKit),所以我认为客户机器上的问题可能是由于正常加载程序“弄乱”了。。
-install_name '@rpath'