Xcode项目中使用的静态库之间的冲突

时间:2011-11-17 12:13:57

标签: ios xcode4 static-libraries

我正在使用RestKit,GData和Facebook API。 所有这些文件都有一个JSON文件,其中许多文件共享相同的名称,枚举等。 当我编译时,我得到重复的错误。

如何防止冲突?

由于 沙尼

2 个答案:

答案 0 :(得分:2)

这是我最好的猜测。发布编译时出现的错误会很有帮助。

如果您使用-all_load链接器标志,请将其关闭。如果您的库要求您使用此选项,请尝试在需要它的特定库上使用-force_load选项。作为绝对的最后手段,可以从源代码构建库,重命名碰撞符号。

以下问题可能会提供有关all_load问题的更多信息:

Objective-C categories in static library

答案 1 :(得分:2)

我遇到了这个问题,因为新的Facebook SDK 3.0现在是一个静态框架,其中还包含SBJSON,我还有另一个静态框架,它也包含相同的类。最初我会进入并编辑Facebook SDK的源文件,并将自定义前缀应用于SBJSON类。这不再有效。

我开始变得非常沮丧并开始在盒子外面思考,这是我提出的解决方案。

  1. 导航至FacebookSDK.framework-> Versions-> Current
  2. 使用最好的IDE打开已编译的FacebookSDK库文件,textedit会这样做!
  3. 搜索区分大小写并将所有出现的“SBJson”替换为“FBJson”
  4. 搜索区分大小写并将所有出现的“SBJSON”替换为“FBJSON”
  5. 保存,清理,编译,好好去!
  6. 谁知道这会起作用?

    注意:有人会说,为什么用FBJson而不是FBSBJson替换?我确定最好保持相同的字符长度以确保安全。 注意:如果您尝试使用其他框架,请务必在头文件中搜索对要重命名的冲突类的任何引用。在这种情况下,重命名的类未在任何头文件中引用。如果是的话,我会确保在头文件中重命名它。