重复的符号_OBJC_METACLASS _ $ _ ClassName

我试图运行我的cocos2d应用程序,面临这个错误,因为我最近升级了我的sdk到4.2和我的cocos2d到0.99.5。

我试图清理我的项目,甚至更改目标ios部署,但错误仍然是一样的。 还要重命名className,以避免来自cocos2d的Library类名称的重复。

ld:重复符号_OBJC_METACLASS _ $ _ MenuSceneNew in / Users / umaidsaleem / Desktop / functionalityTest / build / Debug-iphonesimulator / libcocos2d libraries.a(MenuScene.o)和/Users/umaidsaleem/Desktop/functionalityTest/build/functionalityTest.build/Debug- iphonesimulator / functionalityTest.build /对象 – 正常/ I386 / MenuScene.o

你连接两次文件MenuScene.m。 你显然有它在一个静态库,也在你的主要应用程序。

另一个相当简单的事情要检查是,你没有意外#import一个.m文件,而不是.h头文件。

发生在我身上。

另外一个原因,对于那些和我刚刚做的一样的人来说,可能是你重新创build了一个托pipe对象类。 通过这样做并在项目结构中select另一个组,您意外地创build了对相同文件的另一个引用。

我最终在项目的根目录和我的模型组中使用了两个头文件和实现的引用。 删除顶部引用.h和.m文件摆脱了链接失败。

有时Core Data将AnyProjectNameModel.xcdatamodeld插入到构build阶段的编译源中。 检查并删除它,一切都再次运行…错误消息只是表示生成的ManagedObjects … AnyProjectNameModel.xcdatamodeld的正确位置是Build Phases中的Copy Bundle资源。 在这里输入图像说明

检查你的目标的编译源,看看是否包含一个class.m文件两次

我犯的一个愚蠢的错误是,我把我的@implementation命名为我的超类。

.h

 @interface Subclass : Superclass @end 

.m

 #import "Subclass.h" @implementation Superclass @end 

没有任何来自谷歌的常规build议似乎有帮助,所以如果有人像我一样疯狂或累(也许是一个健康的混合),确保你没有重复@implementation

我还有这个特殊的错误发生时,没有被添加到项目中的文件被引用项目中的某个地方。 我经历过的两种情况是,我从项目中删除/删除了文件,而没有删除对它们的引用,当在一个项目中协同工作时,一个队友添加了引用,但是我没有将文件添加到我的版本项目。

我知道OP已经解决了他们的问题,但我觉得这可能会帮助别人谁读这个问题,同时寻求帮助。

另一件要检查的双链接 – 它可能在左侧的文件列表中的两个不同的地方有相同的文件。 然后编译器编译并链接两次。

例如,在组织文件层次结构时发生这种情况。

您不必制作图书馆或其他任何东西 – 只需将.m拖放到项目树中的两个不同位置即可。

请记住只删除对其中一个的引用,不需要文件垃圾。

对我来说,从“其他链接器标志”中删除-all_load解决了这个问题。

我已经想出了解决scheme本人,抱歉张贴一点延迟。 所有的帮助都非常感谢,但问题出现时,我添加新的CCLayer派生类和复选标记cocos2d 0.99.5静态库是错误的。 然后,我重新上课,而不检查和清理我的目标,然后build立和去。 现在解决的问题。

XCode Beta在删除对类的引用时崩溃了。 这就造成了答案中所描述的问题,解决方法又有所不同。

在我的目标构build阶段,在“编译源码”下,让我悲伤的项目是红色的。 我不能用减号button删除它,但在编译器标志中input“skip”导致重载项目后红色类消失。 我假设你可以在那里input任何东西。

我花了两个小时才find解决问题的办法,我把这个问题放在这里,为有这个问题的人提供了另一个select,虽然这可能不是一个普遍的问题。

没有一个答案为我工作,所以我做的是从项目中删除文件,并只select删除引用。

然后我回来了相同的文件,它的工作。

这解决了我的错误。 由于该项目是多协作的,XCode可能丢失了引用。

希望能帮助别人。

像这样的错误的另一种可能性是当有类名冲突。 在您的项目中有两个名称相同的类,或者您的项目中的类与某些依赖库中定义的类冲突。

从右侧面板移除目标,然后再添加目标。 这将删除任何重复的引用。 如果2程序员添加相同的目标并提交项目文件,可能会发生这种情况。

在我的情况下,我正在使用一个二进制库,包括我在外面使用相同的类名,所以我改变了我的类名,它工作正常:)

我有一个有两个目标的项目。 一个名为Component的目标,另一个名为Sample。 示例是使用组件作为链接库。 然后Component使用一个名为MyPod的pod(与cocoapod一起安装)。

Podfile是这样写的:

 def shared_pods pod 'MyPod' end target 'Component' do shared_pods end target 'Sample' do shared_pods end 

两个目标都引用了共享的pod列表。 当构build组件目标时,没有问题出现,但是当构build示例时,我得到一个重复的符号_OBJC_METACLASS _ $ _ ClassName。 我已经将Podfile更改为:

 def shared_pods # empty end target 'Component' do pod 'MyPod' shared_pods end target 'Sample' do shared_pods end 

这解决了这个问题。 花了3个小时,希望能省点时间。

在我的情况下,这是因为Xcode自动生成我的NSManagedObject类,然后与我手动创build的NSManagedObject类发生冲突。 在这种情况下,您可以在数据模型检查器中为新创build的实体设置“Codegen”为“Manual / None”。