Objective-C的代碼,所以我有這樣的一段代碼...無法編譯在Ubuntu
/**
* cdb.m
* Copyright (C) 2013 Naveen Mathew. All rights reserved.
*/
#import <objc/Object.h>
#import "cdb.h"
#import <stdio.h>
#import <stdlib.h>
@implementation CDB : Object
{
}
- (int) main {
printf("Hello world");
return 0;
}
@end
int main(void)
{
CDB *myNumber = [CDB new]; // equal to [[Number alloc] init]
[myNumber main];
return 0;
}
,我想編譯它在Ubuntu 13.04,但沒有所有的垃圾是GNUstep的給我。所以,我用的是GNU目標C運行時(gobjc),但是當我編譯我得到以下...
clang -Wall -lobjc -o cdb cdb.m -I/usr/lib/gcc/x86_64-linux-gnu/4.7/include
cdb.m:25:21: warning: class method '+new' not found (return type defaults to
'id') [-Wobjc-method-access]
CDB *myNumber = [CDB new]; // equal to [[Number alloc] init]
^ ~~~
1 warning generated.
,當我運行該程序,我得到一個分段錯誤......我用gobjc 4.7。我嘗試了與gobjc 4.6 ... ...它編譯,但我仍然得到一個分段錯誤...
什麼是您使用的libobjc?我相信GNUStep的根類是'NSObject',而不是'Object'。 –
我正在使用GNU Objective C庫。這是gobjc 4.7 ...以前的版本有新的方法,但他們在4.7中棄用它,我不知道如何現在實例化方法... –
你可以使用'alloc' /'init'就像它在評論中說的那樣。 –