当我按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
我不知道从哪里开始?
问题是什么?
答案 0 :(得分:171)
如果您错误地让XCode为#import语句自动完成指定'duplicate'类而不是'.h'的'.m'文件,也可能会出现此错误。
答案 1 :(得分:64)
您似乎在代码的不同位置编译了两次相同的BlogTableItemCell类。在下列情况下可能会发生这种情况。
你已经把同一个班级 实施分为两个不同的 文件;
你实际上只有一个 但是,这个类的实现 您还在项目中链接了一个框架 或者包含一个类的库 名字与你的完全相同。
尝试在整个项目中查找您的课程,并确保项目中只有一个副本可用。
答案 2 :(得分:39)
对我来说,将“无公共区块”从“是”改为“否”(在“目标 - >构建设置 - > Apple LLVM - 代码生成”下)
答案 3 :(得分:25)
由于底座定义不佳,我遇到了类似的问题。 我在标题中定义了一个const:
int const kCropLocationTop = 1;
这可能是多次进口的。要修复我更改标题def如下:
extern int const kCropLocationTop;
并将const分配给.m文件:
int const kCropLocationTop = 1;
希望能帮助那些对我的简单客观概念一无所知的人!
答案 4 :(得分:18)
iPhone: Duplicate Symbol Error?来自user576924
对我说得对。然而,找到令人讨厌的gremlin这个ZSH片段。
grep "import.*\.m" **/*.[hm]
会立即告诉您错误的位置。
答案 5 :(得分:18)
错误地将源文件包含在项目中两次 - >构建阶段 - >编译源代码。删除其中一个解决了这个问题。
答案 6 :(得分:8)
此错误的最常见原因是导入xyz.m文件而不是xyz.h文件。
检查您的导入是否包含类似的内容
#import "----.m"
答案 7 :(得分:4)
只是添加;使用Xcode生成子类管理对象(Core Data)有时可以复制生成的文件。对我来说,解决方法是删除生成的文件并重新生成它们。
答案 8 :(得分:3)
我自己也遇到了这个问题。对于列表,这是另一种可能性:
项目文件中的重复链接行。
当我意外复制一行时,我在SVN更新中引起了这种合并冲突。
答案 9 :(得分:2)
它也发生在我身上。在我的例子中,我的核心数据中的一个(仅一个)自动生成的类被插入了两次。我通过查看Build Phases ... Compile Sources来发现重复。只需删除其中一个事件即可解决问题。
答案 10 :(得分:2)
在列表中添加另一个可能的原因...您可能在实现文件中错误地创建了多个常量,但在实现之外,使用相同的名称。
在HeaderFileOne.m
中NSString * const kCoolConstant = @"cool";
在HeaderFileTwo.m
中NSString * const kCoolConstant = @"cool";
因此更改其中一个常量名称将修复编译错误。
答案 11 :(得分:2)
我也遇到过这个问题。我的解决方案是重命名一个全局变量,它与其他类中的变量名称相同。希望这有帮助
答案 12 :(得分:2)
这可能有助于某人
我收到此错误是因为我复制了一个ViewController,然后将其重命名。所以当我编译时,我得到了这个错误。原因是在两个视图控制器中都有一个" float"具有相同名称的变量,即" float padding = 10.0"这是我在课堂上定义的。 在其中一个视图控制器中重命名上述变量的名称解决了我的问题。
答案 13 :(得分:0)
当我使用可本地化的xib文件时,同样的事情发生在我身上,不小心我创建了两个实现文件,并在我的情况下引起了问题。在删除/重新创建实现文件而没有做同样的错误之后,错误被修复了。
答案 14 :(得分:0)
我们的一位开发人员离开了" libSoomla *"项目文件在那里两次。我删除了重复的soomla文件,重新构建,然后修复它!
希望它有所帮助。
答案 15 :(得分:0)
在可能的情况下,我按照一些说明构建了一个较新版本的Subversion,它指示我创建这个符号链接:
rm /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain
现在我真的是一个Windows家伙,所以它对我来说并不是很明显 - 但删除链接为我修复了它(重启XCode后):
let transition: CATransition = CATransition()
transition.duration = 0.3
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft
self.view.window!.layer.addAnimation(transition, forKey: nil)
self.dismissViewControllerAnimated(false, completion: { _ in })
呼。
(我得到的实际错误是这里描述的错误: build error duplicate symbols arclite.o)
答案 16 :(得分:0)
Make sure that you didn't import .m File . For me this happen I added #import "SchoolCommuterHome.m" instead of #import "SchoolCommuterHome.h"