iPhone:重复符号错误?

fab*_*ian 57 objective-c duplicate-symbol ios

按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
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始?

有什么问题 ?

小智 173

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


Mas*_*aro 65

您似乎在代码的不同位置编译了两次相同的BlogTableItemCell类.在下列情况下可能会发生这种情况.

  • 您已将相同的类实现放入两个不同的文件中;

  • 实际上,您只有这个类的一个实现,但是您还在项目中链接一个框架或库,其中包含一个名称与您的名称完全相同的类.

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

  • 刚碰到这个错误...我在我的一个实现中导入了"*.m"而不是"*.h"文件! (20认同)
  • 当我在目标和测试中都做到这一点时,我遇到了这个问题. (3认同)
  • 好吧,我明白了.Xcode在类资源管理器中有一个旧文件引用.谢谢 (2认同)

Nei*_*Nie 40

对我来说,将"无公共块"从"是"更改为"否"(在"目标 - >构建设置 - > Apple LLVM - 代码生成"下) 在此输入图像描述


jsa*_*ven 25

由于对锥体的定义不佳,我遇到了类似的问题.我在标题中定义了一个const:

int const kCropLocationTop = 1;
Run Code Online (Sandbox Code Playgroud)

这可能是多次进口的.要修复我更改标题def如下:

extern int const kCropLocationTop;
Run Code Online (Sandbox Code Playgroud)

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

int const kCropLocationTop = 1;
Run Code Online (Sandbox Code Playgroud)

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


bra*_*ing 18

iPhone:重复符号错误?由user576924

我正确地回答了 然而要找到令人讨厌的gremlin这个ZSH片段.

grep "import.*\.m" **/*.[hm]
Run Code Online (Sandbox Code Playgroud)

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


小智 18

错误地,源文件在项目 - >构建阶段 - >编译源中包含两次.删除其中一个解决了这个问题.


Joh*_*ijk 8

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