我目前在我的项目中有ShareKit,它被编译为静态库。它已得到妥善实施。我还通过将他们的框架添加到我的项目中来实现亚马逊的AWS SDK。
似乎重复的符号来自亚马逊的AWS SDK文件“AWSIOSSDK”。这就是它的样子:
该文件与ShareKit的文件libShareKit.a发生冲突。这就是该文件的样子:
无论如何,这两个文件都是我以前从未见过的文件。似乎有些JSON文件在它们之间发生冲突。
我已经查看了其他SO问题,并且他们说要使用已编译的源代码执行某些操作,但这些文件都不在任何库的已编译源中。
以下是Xcode给出的确切错误:
ld: duplicate symbol _OBJC_CLASS_$_SBJsonParser
无论如何,有没有人有任何想法我应该做什么?除非我解决了这个问题,否则我的应用程序无法编译。
谢谢!
答案 0 :(得分:5)
您可以继续将库存档拆分为其目标文件,并通过省略重复项来再次合并它们。
请参阅以下演练,了解如何管理该任务: Avoiding duplicate symbol errors during linking by removing classes from static libraries
答案 1 :(得分:4)
这两个都在其静态库中构建了SBJsonParser
。这不是构建静态库的正确方法。每个应该在没有SBJson
的情况下构建,然后您应该将所有这些与SBJson
链接在一起。有几种解决方案:
SBJson
从.a
文件中删除不正确的ar
文件。您应该可以使用ar -t
列出.a
中的对象,然后ar -d
来删除那些不应该在那里的对象。您当然也可以ar -x
提取所有.o
文件并直接链接它们。答案 2 :(得分:0)
我遇到了与FaceBookConnect Framework(我们称之为项目B)和我的项目(项目A)相同的问题。两者都再次链接JSON框架。
解决方案是:
此致