重复的符号错误:SBJsonParser.o?(Duplicate Symbol Error: SB

2019-07-30 13:01发布

我现在已经在我的项目,该项目被编译为静态库ShareKit。 这是正确实施。 我也有仅仅通过增加他们的理论框架到我的项目实施亚马逊的AWS SDK。

看来,重复的符号是从亚马逊的AWS SDK文件,“AWSIOSSDK”的到来。 这是什么样子:

而该文件与ShareKit的文件,libShareKit.a碰撞。 这是该文件的样子:

反正这两个文件是我没有见过的。 而且似乎有些JSON文件都在其中碰撞。

我已经看过其他等问题,他们说做一些事情编译的源代码,但没有这些文件都是从任一库编译的源代码。

这里是确切的错误Xcode中得到:

ld: duplicate symbol _OBJC_CLASS_$_SBJsonParser

总之,没有任何人有任何想法,我应该怎么办呢? 我的应用程序不能编译,除非我解决这个问题。

谢谢!

Answer 1:

这些都具有内置SBJsonParser到他们的静态库。 这是不是建立一个静态库的正确方法。 每个人都应该建立一个没有SBJson然后你应该联系在一起个个SBJson 。 有一对夫妇的解决方案:

  • 重建这些库(或有自己的维护者这样做)不直接包括第三方库到一个静态库。 这是理想的解决方案。
  • 删除不正确的SBJson从文件.a使用文件ar 。 你应该能够做到这一点使用ar -t列出的对象.a ,然后ar -d删除那些不应该在那里。 你当然也ar -x提取所有.o文件,并直接链接它们。


Answer 2:

你可以继续和图书馆存档拆分成它的对象文件,并留出重复的再次合并。

请参阅下面的演练为获得一个想法来管理任务: 从静态库删除类链接过程中避免重复符号错误



Answer 3:

我曾与FaceBookConnect框架(我们称之为项目B)和我的项目(项目A)相同的问题。 两人都再次连接JSON框架。

解决的办法是:

  1. 去项目B>目标>构建阶段>从“链接二进制与图书馆”删除JSON
  2. 确保JSON框架尚处于项目(不要删除它),这样B项目可以建立
  3. 建立你的B项目,你不应该得到任何错误。 该项目应该建立但不嵌入JSON框架符号
  4. 加入这两个项目B的产物(框架)和JSON框架项目中的
  5. 去项目A>目标>构建阶段和检查两个项目B和JSON已经被添加到“链接二进制与图书馆”节
  6. 建立您的项目

问候,



文章来源: Duplicate Symbol Error: SBJsonParser.o?