#import <windows.h>
#import <objc/Object.h>
@interface SayHello : Object
- (void) Hello;
@end;
@implementation SayHello
- (void) Hello
{
MessageBox( NULL, "HELLO WORLD", "MESSAGE", MB_OK);
}
@end;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
id obj = [SayHello new];
[ obj Hello ];
[ obj free];
return 0;
}
とかいうプログラムをこさえてみた。
要はCと親和性が良いというなら、Cから使えるWin32APIだって呼べるんじゃねぇの?という発想。
コマンドラインから
$gcc objcwin.m C:\mingw\lib\gcc\mingw32\4.4.0\libobjc.a -mwindows
とかして、-mwindowsオプションをつけてMinGW-gccでコンパイルをかけてやると、アッサリ通った。
MessageBox程度だけど、すんなり行けちゃった事にオドロキを覚えた。
この調子なら、SDLあたりもいけそうかな。また今度試してみようと思う。
で、せっかくならこれを生かしてマルチプラットフォームなGUIアプリでも組めたら、さぞ面白いだろうと思ったんだけど、Cで実装されてるGUIライブラリで有名なものって、私の大嫌いなGtk+ぐらいしかないのね。
う~ん。となると、Objective-Cはお遊び用かなぁ。
C++と混在できれば、wxWidgetとか使えるんだろうけどな。
その辺も調べてみようと思いまつ。
2 件のコメント:
はじめまして
Objective-C++というのもありますよ
構文チェックが凄く厳しくなりますが・・・
okraさん、情報ありがとうございます。
今はlinux環境に以降したのでObjective-C++を使えるようになりましたが、確か当時はwindows向けのObjective-C++処理系がみつからなくて、C++と混在できたら〜なんて書いた気がします。
(もしかして、MinGWのObjective-Cコンパイラは、普通にObjective-C++のコードも処理してくれるんでしょうかね(^^;)
Objective-C++にすると構文チェックが厳しくなるとのことで、また機会があったらObjective-C++も含めて触ってみたと思います。
コメントを投稿