0

我正在使用 CocoaPods,并且在添加 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

4 回答 4

3

有,项目中可能有一些文件被多次添加

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

可能这会解决问题

于 2013-05-27T12:17:30.093 回答
3

冲突包最有可能AFNetworking,它可以在您发布的构建日志中找到(在第 7 行,duplicate symbol _OBJC_IVAR_$_AFQueryStringPair._field in:..,谷歌搜索AFQueryStringPair会引导您快速进入 AFNetworking 相关位置)。

有问题的符号在这里声明。

Sonic SDK是否AFNetworking有机会嵌入?

在这种情况下,您可能很幸运能够使用AFNetworkingSonic SDK 中的嵌入式,只需放弃您自己对AFNetworking. 如果AFNetworking是您的其他依赖项之一的下游依赖项,那将更加棘手。但至少你知道去哪里找。

编辑:由于您也标记了这个问题RESTKit,这可能比 Sonic SDK(参见例如这个)线程更可能是罪魁祸首。

于 2013-05-27T13:15:21.217 回答
1

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

您可以检查的其他事项可能包括:

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

  • 在您的应用程序中包含多个版本的相同第 3 方软件。

不要忘记,您可以取消选中目标文件的“目标成员资格”复选框,以防止它包含在您的构建中,因此如果出于兼容性原因需要多个版本,您可以按目标选择哪些文件处于活动状态。

于 2015-09-22T16:25:50.547 回答
0

您也可能只是链接到多个 pod 库。确保Link Binary With Libraries您没有同时链接libPods.aandlibPods-{target}

这只是在将一揽子 podfile 划分为目标特定指令后发生在我身上。

于 2014-10-30T22:05:43.357 回答