I finally got GNUstep working (on windows), and it compiles and runs fine. However, whenever I try to use NSLog, I get the following error:
$ gcc -o hello hello.m -I /GNUstep/System/Library/Headers \
> -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base
hello.m: In function 'main'开发者_如何学运维:
hello.m:4:5: error: cannot find interface declaration for 'NXConstantString'
My source code:
#import <Foundation/Foundation.h>
int main(void) {
NSLog(@"hello world");
}
It is -
NSLog(@"hello world");
not
NSlog(@"hello world"); // 'l' should be upper case in NSLog
Try this -
gcc -o hello hello.m -I /usr/lib/GNUstep/System/Library/Headers \
-L /usr/lib/GNUstep/System/Library/Libraries/ -lgnustep-base \
-fconstant-string-class=NSConstantString
How to compile objective c programs using gcc
Try the following:
$gcc -o hello hello.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
Note
-fconstant-string-class=NSConstantString
without this command it consider constant string objects as a class type NXConstantString
.
To run:
$./hello.m or whatever your objective-c code file name.
it's very simple just put a space between -lgnustep-base
and -fconstant-class=NSConstantString
Wrong way: -lgnustep-base-fconstant-class=NSConstantString
Right way: -lgnustep-base -fconstant-class=NSConstantString
精彩评论