Xcode-使用SDK 10.9链接ApplicationServices.framework导致10.7不兼容



我在10.7上运行Cocoa应用程序时遇到了问题,尽管我似乎采取了正确的步骤。以下是我正在做的事情和似乎错误的地方的描述:

我正在一台10.8机器上构建XCode 5.0.2和SDK 10.9,部署目标为10.7。我的一个动态库使用了一些CoreGraphics函数,所以我将该库链接到ApplicationServices.framework

在构建之后,我的使用CoreGraphics的库直接引用了位于/System/library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics的CoreGraphicsframework,但10.7上不存在该路径。当我在10.8+上运行应用程序时,它运行得很好,但在10.7上,它在试图加载不存在的框架时失败了。

我的(黑客)解决方案:

经过一段时间的思考,我决定进入核心阶段,添加一个新的构建阶段,将我库中的CoreGraphics引用更改为与ApplicationServices.framework下的10.7兼容的路径

install_name_tool-change/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics/System/Librare/Frameworks/ApplicationServices.framework/framework/CoreGraphics.framework/Versions/A/CoreGraphics myLibrary.dylib

这是有效的,但看起来像是一个愚蠢的黑客。其他人看到了吗?

您必须对其进行测试,但也许只链接ApplicationServices.framework.就足够了

否则,您应该能够使用弱链接:在将二进制与库链接构建阶段,将状态从必需更改为最佳。关于弱链接的更多详细信息可以在这里找到。

相关内容

最新更新