Windows下Objective-C环境搭建教程

WindowsObjective-C环境搭建教程是本文要介绍的内容,主要是在windows平台下搭建Objective-C开发环境,具体内容来看本文详解。

1.安装4个文件,直接找我要吧

2、测试:

安装完成后,进入"开始-程序-GNUstep-Shell",出现的窗口就是shell 窗口,就可以进行编辑(vi/vim)和编译(gcc) object-C代码了。

这个shell的默认路径是 \home\<username>,例如,我的是 /home/samsung/。

另外,我直接用devc++,UE等编辑软件编辑程序,放在/home/samsung/下,进行编译和运行。

下面是我的代码和运行结果:

hello.m的源码:

#import <stdio.h> 


int main(int argc,const char *argv[]){  


printf("hello world\n");  


return 0;  


} 

编译运行:

samsung@coco ~  


$ gcc hello.m  


samsung@coco ~  


$ ls  


a.exe  hello.m  


samsung@coco ~  


$ ./a.exe  


hello world  


samsung@coco ~ 

3、一个更复杂的例子:

代码:包含3个文件。

(1) Fraction.h:

#import <Foundation/NSObject.h> 


 


@interface Fraction: NSObject {  


    int numerator;  


    int denominator;  


}  


 


-(void) print;  


-(void) setNumerator: (int) d;  


-(void) setDenominator: (int) d;  


-(int) numerator;  


-(int) denominator;  


-(void) setNumerator: (int) n ddd: (int)d;  


-(void) setNumerator: (int)n : (int)d :(int) a;  


// 这里,有3个setNumerator函数, 是重载。  


@end 

(2)Fraction.m

#import "Fraction.h"  



#import <stdio.h> 



 


@implementation Fraction  


-(void) print {  


    printf( "%i/%i", numerator, denominator );  


}  


 


-(void) setNumerator: (int) n {  



    nnumerator = n;  



}  


 


-(void) setDenominator: (int) d {  



    ddenominator = d;  



}  


 


-(int) denominator {  


    return denominator;  


}  


 


-(int) numerator {  


    return numerator;  


}  


 


-(void) setNumerator: (int) n ddd: (int)d {  



    nnumerator = n;  




    ddenominator = d;   



}  


-(void) setNumerator: (int)n : (int)d :(int) a {  



        nnumerator = n;  




        ddenominator = d;  




        printf("+++++a = %d +++ \n", a);  



}  


@end 

(3) main.m

#import <stdio.h> 



#import <Foundation/Foundation.h> 



#import "Fraction.h"  


 


int main( int argc, const char *argv[] ) {  


    // create a new instance  



    Fraction *frac = [[Fraction alloc] init];  



     


     


    int x;  


    int y;  


 


    // set the values  


    [frac setNumerator: 1];  


    [frac setDenominator: 3];  


 


    // print it  


    printf( "The fraction is: " );  


 


    [frac print];  


    printf( "\n\n" );  


    NSLog(@"hello world!!!\n");     // ok  


     


    [frac setNumerator:34 ddd: 98];  


     


    [frac print];  


    printf( "\n\n" );  


    NSLog(@"hello world world!!!\n");     // ok  


     


    [frac setNumerator:44 : 55 :66];      // ok  


    [frac print];  


    printf( "\n\n" );  


         


    scanf("%d %d", &x,&y);             //scanf 函数的测试,ok  


    


    [frac setNumerator: x ddd: y];   //ok  


    [frac print];  


    // free memory  


    [frac release];  


    // [frac release];         //前面已经release了,所以这里发生异常:程序崩溃。  


                               //即对空指针进行release,当然不允许了。  


    return 0;  


} 

编译方法:

(1)将main.m编译成main.o :

gcc -fconstant-string-class=NSConstantString -c main.m -I /GNUstep/System/Library/Headers 

(2) 将Fraction.m编译成Fraction.o :

gcc -c Fraction.m -I /GNUstep/System/Library/Headers 

(3) 将.o编译成可执行程序,名为main(最后生成的是main.exe)

gcc -o main main.o Fraction.o -L /GNUstep/System/Library/Libraries/ -lobjc -lgnustep-base 

注意:这时会有warning出现,但可以不用管它,毕竟,我们的可执行程序已经编译出来了.

运行结果:

samsung@coco ~/objc/fraction  


$ ./main.exe  


The fraction is: 1/3  


 


2010-08-13 16:29:01.515 main[1212] hello world!!!  


34/98  


 


2010-08-13 16:29:01.515 main[1212] hello world world!!!  



+++++a = 66 +++  



44/55  


 


22 33  


22/33  


 


samsung@coco ~/objc/fraction    

4、总结:

1、用户也可以使用cygwin+ GNUstep来进行开发;

2、Objective-C是以m为后缀的,用GNU GCC来编译;

相关推荐