重复符号_OBJC_METACLASS _ $ _ ClassName

use*_*584 44 objective-c cocos2d-iphone

我正在尝试运行我的cocos2d应用程序并面临此错误,因为我最近将我的sdk升级到4.2并将我的cocos2d升级到0.99.5.

我试图清理我的项目甚至更改目标ios部署,但错误保持不变.同时重命名className以避免从cocos2d的库类名重复.

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

der*_*ekv 165

要检查的另一个相当简单的事情是,您不会意外地#import使用.m文件而不是.h头文件.

发生在我身上.

  • 啊哈!这正是刚才给我的东西.感谢您的评论.我知道我正在追踪一个愚蠢的错误,但不确定哪一个,当然......! (3认同)

Jer*_*myP 53

您将文件MenuScene.m链接两次.你显然在静态库和主应用程序中都有它.


小智 37

另一个原因是,对于那些和我刚刚做过同样事情的人来说,可能是你重新创建了一个托管对象类.通过这样做并在项目结构中选择另一个组,您不小心创建了对相同文件的另一个引用.

我最后在项目的根目录和模型组中都有两个头文件和实现引用.删除.h和.m文件的最顶层引用消除了链接失败.


Boo*_*ker 25

有时Core Data会将AnyProjectNameModel.xcdatamodeld插入Build阶段的Compile Sources.检查并删除它,一切都再次运行...错误消息只是表明生成的ManagedObjects ... AnyProjectNameModel.xcdatamodeld的正确位置是Build Phases中的Copy Bundle资源. 在此输入图像描述


Jib*_*eex 16

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


Ril*_*eyE 6

我犯的一个愚蠢的错误是我将我的名字命名@implementation为我的超类.

在里面 .h

@interface Subclass : Superclass
@end
Run Code Online (Sandbox Code Playgroud)

在里面 .m

#import "Subclass.h"

@implementation Superclass
@end
Run Code Online (Sandbox Code Playgroud)

谷歌的常规建议似乎没有任何帮助,所以如果有人像我一样疯狂或疲惫(也许是两者的健康组合),请确保你没有重复@implementation!


小智 5

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