构建失败:ld:重复符号_OBJC_CLASS _ $ _ Algebra5FirstViewController

Joe*_*raq 71 xcode objective-c ios ios5.1

我通过iPhone模拟器运行我的应用程序时突然收到此错误:

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用):

ld:重复符号_OBJC_CLASS _ $ _ Algebra5FirstViewController in .../Algebra5-anwcuftojtxtgkfootneeeqhwztj/Build/Intermediates/Algebra5.build/Debug-iphonesimulator/Algebra5.build/Objects-normal/i386/ExercisesViewController.o and .../Algebra5-anwcuftojtxtgkfootneeeqhwztj /构建/中间体/ Algebra5.build/Debug-iphonesimulator/PSLE Algebra5.build/Objects-normal/i386/PSLE_Algebra5FirstViewController.o for architecture i386

这是什么一回事呢?

J_D*_*J_D 67

看起来类Algebra5FirstViewController是多次编译的.

你能确保.m和.mm只包含在Xcode的项目源中一次吗?您也可以通过检查编译日志(右边的最后一个图标,断点图标旁边)确认这一点,并确认它只编译一次.

此外,如果此类是您链接的库的一部分,并且您有一个具有相同名称的类,则可能会出现相同的错误.

最后,您可以尝试清理和重建,以防旧的目标文件仍然存在并且编译文件中存在一些垃圾.以防万一...

编辑

我还注意到第二个引用是在ExercisesViewController的文件中进行的.也许这个文件中有一些东西.要么#imported Algebra5FirstViewController文件而不是.h,要么练习ViewController有@implementation(Algebra5FirstViewController)而不是@implementation(ExercisesViewController),或者有一些垃圾用这个文件将用Clean a Rebuild清理.

  • 自动完成导入 .m 文件而不是 .h 是导致我出现问题的原因 (2认同)

And*_*Ley 51

如果在"构建阶段"中目标的"编译源"部分中多次引用相同的.m文件,则会发生这种情况.删除重复的条目,你应该没事.

  • ...或者如果代码中使用的`.m`文件未在"编译源"中引用 - 就像我的情况一样. (2认同)

tob*_*pwn 30

也通过const * NSString在头文件中声明(错误地)而不是实现文件(正确)来解决这个问题


use*_*669 24

我遇到了这个问题因为我不小心导入了.m而不是.h.希望阅读本文可以节省一些同样问题的人.


Jay*_*bey 10

我有同样的问题.得到了解决!

如果您已将任何文件导入项目,则检查.m(主)文件中是否存在目标(项目名称) - >构建阶段 - >编译源.

如果文件不存在,则使用显示的(+)添加按钮包含它.此外,如果存在重复文件(如果有),则删除它.

现在按cmd + shift + k清除项目.New Build不应显示此错误.

在此输入图像描述


Eri*_*ric 5

从@paiego解释说,从其他项目添加文件时我遇到了类似的错误.我的错误是我没有勾选" 添加到目标 ".如上所述,我删除了引用并再次添加了文件,但这次检查" 添加到目标 ".