我正在尝试运行我的cocos2d应用程序并面临此错误,因为我最近将我的sdk升级到4.2并将我的cocos2d升级到0.99.5。
我尝试清理我的项目甚至更改Target ios部署,但错误仍然相同。同时重命名className以避免从cocos2d的库类名重复。
ld:重复符号_OBJC_METACLASS _ $ _ MenuSceneNew in /用户/ umaidsaleem /桌面/ functionalityTest /编译/调试-iphonesimulator / libcocos2d libraries.a(MenuScene.o)和 /Users/umaidsaleem/Desktop/functionalityTest/build/functionalityTest.build/Debug-iphonesimulator/functionalityTest.build/Objects-normal/i386/MenuScene.o
答案 0 :(得分:165)
要检查的另一个相当简单的事情是您没有意外地#import
.m
文件而不是.h
头文件。
发生在我身上。
答案 1 :(得分:52)
您正在将文件MenuScene.m链接两次。你显然在静态库和主应用程序中都有它。
答案 2 :(得分:37)
另一个原因是,对于那些和我刚刚做过同样事情的人来说,可能是你重新创建了一个托管对象类。通过这样做并在项目结构中选择另一个组,您不小心创建了对相同文件的另一个引用。
我最后在项目的根目录和模型组中都有两个头文件和实现的引用。删除对.h和.m文件的最顶层引用可以消除链接失败。
答案 3 :(得分:24)
有时Core Data会将AnyProjectNameModel.xcdatamodeld插入Build阶段的Compile Sources。检查并删除它,一切都再次运行...... 错误消息只表示生成的ManagedObjects ... AnyProjectNameModel.xcdatamodeld的正确位置是Build Phases中的Copy Bundle资源。
答案 4 :(得分:15)
检查目标的编译源并查看是否包含两次class.m文件
答案 5 :(得分:6)
我犯的一个愚蠢的错误是我将@implementation
命名为与我的超类相同。
在.h
@interface Subclass : Superclass
@end
在.m
#import "Subclass.h"
@implementation Superclass
@end
谷歌的常规建议似乎都没有帮助,所以如果有人像我一样疯狂或疲惫(也许是两者的健康组合),请确保你没有重复@implementation
!
答案 6 :(得分:4)
在我的情况下,这是因为Xcode自动生成我的NSManagedObject类,然后与我手动创建的NSManagedObject类发生冲突。在这种情况下,您可以设置" Codegen"到"手册/无"在新创建的实体的数据模型检查器中。
答案 7 :(得分:2)
当项目中的某个地方引用了尚未添加到项目中的文件时,我也遇到了这个特殊错误。我遇到过这种情况的两个案例是我从项目中删除/删除了文件而没有删除对它们的引用,以及在一个项目中合作工作,其中一个队友添加了引用,但我还没有将文件添加到我的版本中项目
我知道OP已经解决了他们的问题,但我觉得这可能有助于其他在寻求帮助时阅读此问题的人。
答案 8 :(得分:2)
检查双链接的另一件事 - 它可能在左侧文件列表中的两个不同位置具有相同的文件。然后编译器编译并链接它两次。
例如,在玩组织文件层次结构时会发生这种情况。
您不必创建图书馆或任何花哨的东西 - 只需将.m拖到项目树中的两个不同位置。
请记住,只删除对其中一个的引用,不需要删除文件。
答案 9 :(得分:2)
对我来说,从'其他链接标记中删除-all_load'解决了这个问题。
答案 10 :(得分:1)
我自己已经找到了解决方案,抱歉没有延迟发布。所有的帮助都非常感谢,但是当我添加新的CCLayer派生类和复选标记cocos2d 0.99.5静态库时,问题就出现了。然后我重新上课,没有检查并清理我的目标,然后建立并去。问题现在解决了。
答案 11 :(得分:1)
我有一个有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列表。构建组件目标时,不会出现任何问题,但在构建示例时,我会得到一个重复的符号_OBJC_METACLASS _ $ _ ClassName。 我已将Podfile更改为:
def shared_pods
# empty
end
target 'Component' do
pod 'MyPod'
shared_pods
end
target 'Sample' do
shared_pods
end
这就解决了这个问题。 花了3个小时,希望能节省一些时间。
答案 12 :(得分:0)
就我而言,我已经在子项目以及mainProject中将libxxxx.a添加到Link Binary with Libraries部分。因此,存在重复的符号。从子项目中删除已修复它。
答案 13 :(得分:0)
在我的情况下,我使用的二进制库包含我在外面使用的相同类名, 所以我改变了我的班级名称并且工作正常:)
答案 14 :(得分:0)
从右侧面板中删除目标,然后再次添加目标。这将删除任何重复的引用。 如果2个程序员添加相同的目标并提交项目文件,则可能会发生这种情况。
答案 15 :(得分:0)
像这样的错误的另一种可能性是存在类名冲突。项目中具有相同名称的2个类,或者项目中的类与某些依赖库中定义的类冲突。
答案 16 :(得分:0)
没有一个Answers对我有用,所以我所做的就是从项目中删除文件,只选择Remove References。
然后我添加了相同的文件并且它有效。
修复了我的错误。由于项目是多方协作的,因此XCode可能会丢失存储在某处的引用。
希望能有所帮助。
答案 17 :(得分:0)
XCode Beta在删除对类的引用时崩溃了。这导致了答案中描述的问题,修复方法再次不同。
在我的目标构建阶段,在“编译源”下,给我悲伤的项目是红色的。我无法使用减号按钮删除它,但在编译器标志中键入“skip”会导致红色类在重新加载项目后消失。我假设你可以在那里打字。
我花了两个小时才找到解决问题的方法,我把它放在这里为那些遇到这个问题的人提供了另一种选择,虽然它可能不会是一个普通的。