ld:xx架构armv7 Xcode项目的重复符号

时间:2014-08-04 16:56:45

标签: ios xcode ld duplicate-symbol

大家好我有一个Xcode项目,每次我尝试构建项目时都会给我这个错误:

ld:xx架构armv7 Xcode项目的重复符号 clang:错误:链接器命令失败,退出代码为1 ...

我已经google了,大多数解决方案都说要摆脱重复的文件 构建阶段 - >编译项目的资源部分或在某些文件中将导入.m更改为.h。问题是编译资源列表甚至没有排序,我甚至不知道要修复哪些文件,因为我的项目中有很多文件。关于如何清理它的任何建议?

3 个答案:

答案 0 :(得分:6)

我有时会遇到此错误,问题始终存在。我在一个类的.m中有一个静态变量,在另一个.m中有另一个同名的静态变量。显然,当有两个具有相同名称的静态变量时,编译器不喜欢它,无论是否在不同的文件中。因此,请检查是否存在任何重复的静态变量名称或#define宏。此外,它可能不是重复文件或导入两次的文件。如果导入了两个不同的文件,但每个文件都有一个具有相同名称的变量或宏,则会出现错误,因为编译器无法确定要使用哪个文件。冲突变量应该在错误中提到的文件中。希望这有帮助!

答案 1 :(得分:4)

您的项目中有某些文件可能已导入两次,尝试分析错误日志,它必须引用文件所在的位置,您必须得到错误,因为“YourViewCOntroller.O”找到了双文件,在项目导航器中搜索“YourViewCOntroller”,您需要从Xcode项目中删除这些文件然后重新构建

答案 2 :(得分:0)

如果您使用像我这样的 Cocoapods ,您可能会发现其他答案没有帮助,因为重复项是由pod文件自动生成的。

对我有用的是查看重复符号列表,例如:

  

重复符号_OBJC_METACLASS _ $ _ AFImageCache in:

     

___ /建造/产品/调试-的iPhoneOS / libPods-AFNetworking.a(的UIImageView + AFNetworking.o)

     

___ /建造/产品/调试-的iPhoneOS / libAFNetworking.a(的UIImageView + AFNetworking.o)

     

ld:214架构armv7的重复符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

然后转到您的项目/目标构建设置 - >其他链接器标志并删除对重复pod的引用(在我的情况下,AFNetworking)。

清理,再次构建它应该可以工作。

-

据我所知,这种情况可能会发生,因为其中一个pod引用了AFNetworking,导致重复。