我现在已经在我的项目,该项目被编译为静态库ShareKit。 这是正确实施。 我也有仅仅通过增加他们的理论框架到我的项目实施亚马逊的AWS SDK。
看来,重复的符号是从亚马逊的AWS SDK文件,“AWSIOSSDK”的到来。 这是什么样子:
而该文件与ShareKit的文件,libShareKit.a碰撞。 这是该文件的样子:
反正这两个文件是我没有见过的。 而且似乎有些JSON文件都在其中碰撞。
我已经看过其他等问题,他们说做一些事情编译的源代码,但没有这些文件都是从任一库编译的源代码。
这里是确切的错误Xcode中得到:
ld: duplicate symbol _OBJC_CLASS_$_SBJsonParser
总之,没有任何人有任何想法,我应该怎么办呢? 我的应用程序不能编译,除非我解决这个问题。
谢谢!
这些都具有内置SBJsonParser
到他们的静态库。 这是不是建立一个静态库的正确方法。 每个人都应该建立一个没有SBJson
然后你应该联系在一起个个SBJson
。 有一对夫妇的解决方案:
- 重建这些库(或有自己的维护者这样做)不直接包括第三方库到一个静态库。 这是理想的解决方案。
- 删除不正确的
SBJson
从文件.a
使用文件ar
。 你应该能够做到这一点使用ar -t
列出的对象.a
,然后ar -d
删除那些不应该在那里。 你当然也ar -x
提取所有.o
文件,并直接链接它们。
你可以继续和图书馆存档拆分成它的对象文件,并留出重复的再次合并。
请参阅下面的演练为获得一个想法来管理任务: 从静态库删除类链接过程中避免重复符号错误
我曾与FaceBookConnect框架(我们称之为项目B)和我的项目(项目A)相同的问题。 两人都再次连接JSON框架。
解决的办法是:
- 去项目B>目标>构建阶段>从“链接二进制与图书馆”删除JSON
- 确保JSON框架尚处于项目(不要删除它),这样B项目可以建立
- 建立你的B项目,你不应该得到任何错误。 该项目应该建立但不嵌入JSON框架符号
- 加入这两个项目B的产物(框架)和JSON框架项目中的
- 去项目A>目标>构建阶段和检查两个项目B和JSON已经被添加到“链接二进制与图书馆”节
- 建立您的项目
问候,