1

当我编译我的项目时,我有这个错误:

ld: duplicate symbol _OBJC_CLASS_$_DNCloseButton in /Users/.../Library/Developer/Xcode/DerivedData/...Objects-normal/i386/DNCloseButton-7045D069F03DAA13.o for architecture i386
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang++ failed with exit code 1

我知道问题出在课堂上DNCloseButton,但我不知道如何解决?谢谢你的回答。

4

4 回答 4

7

确保您只在头文件 (.h) 中声明了一次接口,并使用#importand not导入了该头文件#include

有时 XCode 会稍微启动一下,并在链接器阶段将同一个文件链接两次。要解决这个问题:

  • 从项目中删除文件(选择“删除引用”选项),然后再次添加。
  • 用 shift-cmd-k 清理
  • 建造

希望这可以帮助!

于 2012-04-26T10:23:27.667 回答
6

如果在您的编译源构建阶段包含两次源文件,则会发生这种情况。

要在 Xcode 4 中检查这一点:

  • 从文件列表中选择您的项目。
  • 从左栏中选择您的目标。
  • 单击顶部栏上的构建阶段选项卡。
  • 在搜索字段中,输入导致链接器错误的类的名称。在上述问题的情况下,它是 DNCloseButton(忽略前面的 _)。

如果该类的源文件在 Compile Sources 列表中出现两次,请删除其中一个条目。

于 2012-08-23T23:50:06.513 回答
5

如果您不小心#import使用.m文件而不是.h文件,您也可能会收到此错误。

于 2012-12-17T11:33:23.893 回答
1

在以下情况下可能会发生这种情况。

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

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

尝试在整个项目中找到您的班级,并确保您的项目中只有一份可用。

于 2012-04-26T09:59:26.960 回答