iPhone:重复的符号错误?

当我按下build + debug时出现这个错误:

ld: duplicate symbol .objc_class_name_BlogTableItemCell in /Users/fabian/Development/Workspaces/iphone_experiments/xcode_build_output/MausLog.build/Debug-iphonesimulator/MausLog.build/Objects-normal/i386/BlogTableItemCell-3733583914888A7B.o and /Users/fabian/Development/Workspaces/iphone_experiments/xcode_build_output/MausLog.build/Debug-iphonesimulator/MausLog.build/Objects-normal/i386/BlogTableItemCell-3733583914888A7B.o collect2: ld returned 1 exit status Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1 

我不是从哪里开始的?

有什么问题 ?

看来你是在你的代码的不同地方编译相同的BlogTableItemCell类两次。 这可能发生在以下情况。

  • 你已经把相同的类实现放到两个不同的文件中了。

  • 你实际上只有一个这个类的实现,但是你也在你的项目中链接一个框架或者一个库,其中包含一个类名与你的名字完全相同的类。

尝试在整个项目中find您的课程,并确保您的项目中只有一个副本可用。

如果您错误地让XCode自动完成#import语句为“重复”类而不是“.h”指定了“.m”文件,也可能会出现此错误。

对我而言,将“无公共块”从“是”更改为“否”(在“目标” – >“生成设置” – >“Apple LLVM – 代码生成” 在这里输入图像描述

由于const的定义不佳,我也有类似的问题。 我在头文件中定义了一个const:

 int const kCropLocationTop = 1; 

这大概是多次导入的。 为了解决我改变了头文件def如下:

 extern int const kCropLocationTop; 

并将const的赋值移到.m文件中:

 int const kCropLocationTop = 1; 

希望能帮助那些像我一样无知的简单客观的c概念的人!

iPhone:重复的符号错误? 由user576924

为我正确回答。 但是,要find这个ZSH片段的有问题的gremlin。

 grep "import.*\.m" **/*.[hm] 

会立即告诉你你的错误在哪里。

错误的源文件被包含在项目 – >构build阶段 – >编译源两次。 删除其中一个解决了这个问题。

导致此错误的最常见原因是导入xyz.m文件而不是xyz.h文件。 检查您的导入是否包含#import "----.m"

只是添加; 使用Xcode生成子类别的pipe理对象(核心数据)有时可以复制生成的文件。 对我来说,修复是删除生成的文件,并重新生成它们。

我自己也遇到了这个问题。 对于这个列表,还有另外一个可能性:

项目文件中的重复链接行。

当我意外地复制了一行时,我在SVN更新中导致了这种合并冲突。

它也发生在我身上。 在我的情况下,我的核心数据(一个)自动生成的类被插入两次。 我通过查看Build Phase … Compile Sources发现了重复。 简单地删除其中一个事件解决了问题。

将另一个可能的原因添加到列表中…您可能在实现文件中错误地创build了多个常量,但在实现之外,具有相同的名称。

在HeaderFileOne.m中

 NSString * const kCoolConstant = @"cool"; 

在HeaderFileTwo.m中

 NSString * const kCoolConstant = @"cool"; 

所以改变这些常量名称之一将修复编译错误。

我也面临这个问题。 我的解决scheme被重命名为全局variables之一,它与其他类中的名称相同。 希望这可以帮助

这可能有助于某人

我得到这个错误,因为我复制一个ViewController,然后重命名它。 所以当我编译我得到这个错误。 原因是在这两个视图控制器有一个“浮动”variables相同的名称,即“浮动填充= 10.0”,这是我在课堂上定义的。 在其中一个视图控制器中重命名上述variables的名称解决了我的问题。

我在玩可本地化的xib文件时也遇到了同样的情况,不小心我已经创build了两个实现文件,并且引起了我的问题。 在删除/重新创build实施文件而没有犯同样的错误之后,错误得到修复。

我们的一个开发人员将“libSoomla *”项目文件放在那里两次。 我删除了重复soomla文件,重新构build,并修复它!

希望它有帮助。

在一些情况下,我遵循一些指令来构build一个更新版本的Subversion,它指导我创build这个符号链接:

 ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain 

现在我真的是一个Windows的家伙,所以它不是立即明显 – 但删除链接固定它(重新启动XCode后):

 rm /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain 

唷。

(我得到的实际错误是这里描述的: 构build错误重复的符号arclite.o )