Objective-CのObjectが見つからない

やらなきゃやらなきゃと思っていたobjectiveCに取り掛かりました。 なかなか面白い言語のようですね、

xcodeのプロジェクトでやるとおまじないが多いので、とりあえずコマンドライン+コンパイラでhello worldします

cのコンパイラであるgccが使えるそうで。

#import<stdio.h>
#import<objc/Object.h>

@interface Test:Object
-(void)hello;
@end

@implementation Test
-(void)hello{
    printf("hello world\n");
}
@end


int main(){
    id obj = [Test alloc];
    [obj hello];
    return 0;
}

と書いてgccを実行

コンパイルエラー


error: cannot find interface declaration for 'Object', superclass of 'Test'

Objectがないと、

調べてみたら、64bitでのObjectは提供していないとかなんとか…

ではNSObjectで使用

#import<stdio.h>
#import<Foundation/NSObject.h>

@interface Test:NSObject

-(void)hello;
@end

@implementation Test
-(void)hello{
    printf("hello world\n");
}
@end


int main(){
    id obj = [Test alloc];
    [obj hello];
    return 0;
}

もっと謎のエラーが出ましたがそもそもフレームワークを使用しているからそれをオプションで明示するらしい

というわけで以下で実行

$ gcc -o hello hello.m -framework Foundation
$ ./hello
hello world

成功