7

我有点进退两难。我在我的项目中添加了 2 个框架,所以碰巧两者都使用 JSONKit。所以当我编译我的项目时,我会在这两个框架之间得到重复的符号。

我必须将 -ObjC -all_load 添加到我的构建设置中,否则由于某些类别未编译,我会遇到运行时错误(崩溃)。

有任何想法吗?

4

1 回答 1

2

当您链接静态库时,链接器会将所有符号嵌入到您的最终二进制文件中。(这就是为什么它被命名为static。)实际上没有很好的方法来去除特定的符号,因为源符号和新嵌入的符号之间没有区别。即使您可以剥离重复的符号,也没有人可以确定重复的符号是相同的版本。如果一个库使用了修改版本的JSONKit库,当你用其他版本替换它时,它会被破坏。

唯一的方法是获取.a没有重复符号的文件或获取源并自己编译它们。如果库制造者不是白痴,他们应该提供一些没有嵌入符号的库版本。如果没有这样的东西,我强烈建议不要使用那个库。因为它不关心符号冲突,这意味着它是由真正的新手制作的,这意味着它充满了问题。

于 2012-10-01T19:13:14.993 回答