Hatena::ブログ(Diary)

ほんまの走り書き技術メモ このページをアンテナに追加 RSSフィード Twitter

2008-08-06

WindowsでObjective-C

| 16:56 | WindowsでObjective-Cを含むブックマーク WindowsでObjective-Cのブックマークコメント

環境準備

http://www.gnustep.org/experience/Windows.htmlから以下をダウンロードする

  • gnustep-system-0.19.2-setup.exe
  • gnustep-core-0.19.2-setup.exe
  • SystemPreferences-1.0.2-2-setup.exe
  • gorm-1.2.4-setup.exe
  • Calculator-1.0.0-2-setup.exe

ほんでもって普通にインストール

環境準備完了!

Objective-CHello World!

hello.m

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

@interface TestClass : Object
- (void) getMessage;
@end

@implementation TestClass
- (void) getMessage {
	printf("Hello Objective-C World\n");
}
@end

int main(int argc, char *argv[]) {
	id obj = [ TestClass alloc ];
	[ obj getMessage ];

	return 0;
}
コンパイル

gcc -o hello hello.m \

-I /GNUstep/System/Library/Headers \

-L /GNUstep/System/Library/Libraries \

-lobjc \

-lgnustep-base \

-fconstant-string-class=NSConstantString \

-enable-auto-import

実行

$ ./hello.exe

Hello Objective-C World

うひょ〜できた〜!!

FoundationライブラリでのHello World

hello.m

#import <Foundation/Foundation.h>

@interface HelloWorld : NSObject
- (void) hello;
@end

@implementation HelloWorld
- (void) hello
{
    NSLog(@"Hello world!");
}
@end

int main(void)
{
    HelloWorld *hw = [[HelloWorld alloc] init];
    [hw hello];
    [hw release];
}
コンパイル

gcc -o hello hello.m \

-I /GNUstep/System/Library/Headers \

-L /GNUstep/System/Library/Libraries \

-lobjc \

-lgnustep-base \

-fconstant-string-class=NSConstantString \

-enable-auto-import

実行

$ ./hello.exe

2008-08-06 16:52:58.234 hello[3924] Hello world!

うひょひょっ!

なんか

コンパイルが少し謎めいているけど、とりあえずOK

iPhone開発の第一歩。。。

できませんできません 2009/09/02 11:52 コンパイルすると。。。
objc/Object.h: No such file or directory
error: cannot find interface declaration for 'Object', superclass of 'TestClass'
になりました。。。

htzhtz 2009/09/03 16:50 コメントありがとうございます。
おそらく、
-I /GNUstep/System/Library/Headers \
が見つかっていないのだと思われます。
http://take-blizzard.cocolog-nifty.com/blog/2009/01/winwdowsobjecti.html
を参照して頂くと、フルパスで指定していますので参考にしてみてください。

エラーが・・・エラーが・・・ 2010/06/09 17:16 '-I' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\DOCUME~1>-L c:\GNUstep\GNUstep\System\Library\Libraries
'-L' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\DOCUME~1>-lobjc
'-lobjc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\DOCUME~1>-lgnustep-base
'-lgnustep-base' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\DOCUME~1>-fconstant-string-class=NSConstantString
'-fconstant-string-class' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\DOCUME~1>-enable-auto-import
'-enable-auto-import' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

パスは通しているし、PATHTEXTにもMAKEファイルを付け加えましたがダメでした。
ちなみにWindows2000です。

htzhtz 2010/06/10 09:27 コメントありがとうございます。
だいぶ前のことで忘れているんですが、コマンドプロンプトではなく、GNUstepのターミナルを使ったんだっけ。。
Windowsには"/"というディレクトリは存在しないので。

tatt61880tatt61880 2017/02/19 12:37 コンパイルエラーの件とは別件ですが、記事中でstrncpyと書かれている箇所、strncatが正しいのではないでしょうか。