【问题标题】:Conflict between static libraries used in Xcode projectXcode项目中使用的静态库之间的冲突
【发布时间】:2011-11-17 12:13:56
【问题描述】:

我正在使用 RestKit、GData 和 Facebook API。 它们都有一个 JSON 文件,其中许多具有相同的名称、枚举等。 编译时出现重复错误。

如何防止冲突?

谢谢 沙尼

【问题讨论】:

  • facebook sdk 3.1 版本解决了这个问题

标签: ios xcode4 static-libraries


【解决方案1】:

这是我最好的猜测。发布您在编译时遇到的错误会很有帮助。

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

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

Objective-C categories in static library

【讨论】:

    【解决方案2】:

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

    这是一个开箱即用的解决方案。

    1. 导航到 FacebookSDK.framework->版本->当前
    2. 用最好的IDE打开编译好的FacebookSDK库文件,textedit就可以了!
    3. 搜索区分大小写并将所有出现的“SBJson”替换为“FBJson”
    4. 搜索区分大小写并将所有出现的“SBJSON”替换为“FBJSON”
    5. 保存、清理、编译。

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

    【讨论】:

    • 一句话回答,你重命名了文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2016-01-18
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多