6

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

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

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

4

3 回答 3

6

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

于 2014-08-04T17:56:21.160 回答
4

您的项目中的某些文件可能已导入两次,请尝试分析错误日志,它必须将您必须在某处出现错误的文件引用为“YourViewCONtroller.O”,它找到了双重文件,搜索“ YourViewCONtroller”在您的项目导航器中,您需要从您的 Xcode 项目中删除这些文件,然后再次构建

于 2014-08-04T17:42:02.657 回答
0

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

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

重复符号 _OBJC_METACLASS_$_AFImageCache 在:

___/Build/Products/Debug-iphoneos/libPods-AFNetworking.a(UIImageView+AFNetworking.o)

___/Build/Products/Debug-iphoneos/libAFNetworking.a(UIImageView+AFNetworking.o)

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

然后转到您的项目/目标Build Settings -> Other Linker Flags并删除对重复 pod 的引用(在我的例子中,AFNetworking)。

清洁,重新构建,它应该可以工作。

--

据我所知,这可能是因为其他 pod 之一引用了 AFNetworking,导致重复。

于 2016-01-11T19:15:01.037 回答