2012-07-15 20 views
0

我试图将游戏移植到iOS,但我遇到了问题。我有一个名为CKSprite以下方法类:Objective-c的子类化给出链接错误

- (id)initWithFile:(NSString *)fileName effect:(GLKBaseEffect *)effect 
{  
    if ((self = [super init])) 
    { 
     //some stuff 
    } 
    return self; 
} 

然后我有一个名为CKPLayer(它在此刻比它继承没有其它的方法或属性的子类:

@property (strong) CKPlayer *player1; 

但当我尝试使用父类的方法来初始化它:

self.player1 = [[CKPlayer alloc] initWithFile:@"Images/parrot.png" effect:self.effect]; 

我得到这个错误:

为i386硬件架构未定义符号: “_OBJC_CLASS _ $ _ CKPlayer”,从引用: objc级-REF IN CKViewController.o LD:符号(多个)未找到i386硬件架构 铛:错误:连接器命令与出口失败代码1(使用-v来查看调用)

这是我第一次尝试做这样的事情,所以我可能做了一些愚蠢的事情。

任何帮助将不胜感激。

#import "CKSprite.h" 

@interface CKPlayer : CKSprite 


@end 
+0

请问'CKSprite'类最终从'NSObject'继承? – 2012-07-15 19:31:07

+0

在上面的问题中写了CKPlayer类接口声明,这可能有助于我们回答。 – Guru 2012-07-15 19:32:04

+0

@KevinGrant,它的确如此。 – Elephantinc 2012-07-15 20:01:14

回答

1

链接器缺少CKPlayer类的实现。也许你只是忘了来实现它,因为它具有“目前没有其他方法或属性”,在这种情况下,只需添加一个文件,它应该像:

#import "CKPlayer.h" 

@implementation CKPlayer 
@end 

和ld应该是快乐的

+0

我已经有一个文件,看起来像这样(以防万一我犯了一个错误,我试图复制和粘贴你写的东西,但无济于事)。 – Elephantinc 2012-07-15 19:55:00

+0

好吧,编译器不会生成正确的符号,或者它没有链接(是目标文件中包含的文件吗?是否与项目的其余部分使用相同的arch i386编译?) – cdelacroix 2012-07-15 20:03:06

+0

您已经拥有它了!该文件被包含在“编译源”下)出于某种原因(我不知道为什么)。非常感谢:D – Elephantinc 2012-07-15 20:05:02

相关问题