架构的重复符号 - CocoaPods + Sonic.framework

时间:2013-05-27 10:43:46

标签: ios xcode cocoapods restkit-0.20

我正在使用CocoaPods,并且everythnig工作正常,直到我添加Sonic.framework。

我收到了链接器错误:

ld: 96 duplicate symbols for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

完整日志: http://pastebin.com/TqdWWYdt

任何帮助?

4 个答案:

答案 0 :(得分:3)

在那里,可能会在项目中多次添加一些文件

  • 清除pod文件,pod install:删除所有内容。
  • 将所有框架添加到podfile中并调用pod install:再次安装所有内容

这可能会解决问题

答案 1 :(得分:3)

冲突的包很可能是AFNetworking,可以在您发布的构建日志中找到(在第7行,duplicate symbol _OBJC_IVAR_$_AFQueryStringPair._field in: ..,Google AFQueryStringPair的Google搜索引导您快速进入AFNetworking相关地点)。

违规符号被声明为here

Sonic SDK是否有机会嵌入AFNetworking

在这种情况下,您可能很幸运能够使用Sonic SDK中嵌入的AFNetworking,只需将您自己的依赖放在AFNetworking上即可解决问题。如果AFNetworking是您的其他依赖项之一的下游依赖项,那将会更棘手。但至少你知道在哪里看。

修改:由于您也使用RESTKit标记了问题,这可能比Sonic SDK(请参阅例如this)主题更可能是罪魁祸首。

答案 2 :(得分:1)

在我的情况下,它是由一个无关的-l" Pods-AFNetworking" in"其他Linker Flags"在"链接"我项目的构建设置部分。我在其他链接器标志中删除了这个以及一些其他无关的-lfoo参数:所有重复的符号都消失了。

您可以查看的其他内容可能包括:

  • 将第三方软件作为项目的一部分复制到您的应用中 收集文件,然后通过命名将其添加为cocoapod 它在Podfile中。

  • 包含同一第三方软件的多个版本 你的应用。

请勿忘记您可以取消选中某个文件"目标会员资格"目标的复选框,以防止它包含在您的构建中,因此,如果出于兼容性原因需要多个版本,则可以选择目标文件处于活动状态。

答案 3 :(得分:0)

您也可能只是链接多个pod库。请确保在Link Binary With Libraries中您没有与libPods.alibPods-{target}等进行关联

将毯子podfile分成目标特定指令后,我才发生这种情况。