我正在使用 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
有什么帮助吗?
我正在使用 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
有什么帮助吗?
有,项目中可能有一些文件被多次添加
pod install
: 删除所有内容。pod install
:to 再次安装所有内容可能这会解决问题
冲突包最有可能AFNetworking
,它可以在您发布的构建日志中找到(在第 7 行,duplicate symbol _OBJC_IVAR_$_AFQueryStringPair._field in:
..,谷歌搜索AFQueryStringPair
会引导您快速进入 AFNetworking 相关位置)。
有问题的符号在这里声明。
Sonic SDK是否AFNetworking
有机会嵌入?
在这种情况下,您可能很幸运能够使用AFNetworking
Sonic SDK 中的嵌入式,只需放弃您自己对AFNetworking
. 如果AFNetworking
是您的其他依赖项之一的下游依赖项,那将更加棘手。但至少你知道去哪里找。
编辑:由于您也标记了这个问题RESTKit
,这可能比 Sonic SDK(参见例如这个)线程更可能是罪魁祸首。
在我的情况下,它是由我的项目构建设置的“链接”部分的“其他链接器标志”中的一个无关的 -l“Pods-AFNetworking”引起的。我在其他链接器标志中也删除了这个和其他一些无关的 -lfoo 参数:所有重复的符号都消失了。
您可以检查的其他事项可能包括:
将 3rd 方软件作为项目文件集合的一部分复制到您的应用程序中,然后通过在 Podfile 中命名它来将其添加为 cocoapod。
在您的应用程序中包含多个版本的相同第 3 方软件。
不要忘记,您可以取消选中目标文件的“目标成员资格”复选框,以防止它包含在您的构建中,因此如果出于兼容性原因需要多个版本,您可以按目标选择哪些文件处于活动状态。
您也可能只是链接到多个 pod 库。确保Link Binary With Libraries
您没有同时链接libPods.a
andlibPods-{target}
等
这只是在将一揽子 podfile 划分为目标特定指令后发生在我身上。