【发布时间】:2013-08-03 23:51:41
【问题描述】:
所以我有这段代码...
/**
* 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 Objective 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。 -
试过
alloc、init和new但是当我编译它说class method not found并且当我尝试运行程序时,我得到一个分段错误...... -
我注意到您使用 clang 作为编译器,但使用 gcc 的头文件和库。这可能是个问题(虽然我希望有更多知识的人可以肯定地说)。
标签: objective-c ubuntu clang gnu gnustep