无法在Windows上使用Gnustep编译Objective C.

2 compilation objective-c gnustep

嗨,我是一个初学者学习目标c.我发现错误"hello.m:1:34:Foundation/Foundation.h:没有这样的文件或目录"我知道我需要制作一个make文件我可能知道如何制作make文件

Bug*_*boy 5

无需创建makefile.如果您从"所有程序 - > GNUstep - > Shell"启动MinGW,如上面的Pax所示,您可以编译.m文件.

我的GNUstep安装在c:\ GNUstep\GNUstep\System中.如果您的不同,则应相应地更改Foundation.h的导入.

我这样做了:

  1. 创建如下所示的c:\ myprogs\obj-c\hello\hello.m:

// ----------你好

#import <../../GNUstep/System/Library/Headers/Foundation/Foundation.h>

int main(int argc, const char* argv[])
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello from Hello.m!");

    [pool release];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

// ----------

  1. 启动MinGW shell.(往上看.)

  2. 在shell命令行上,切换到程序代码所在的目录.(请注意,由于这不是Unix,因此必须包含Windows驱动器号.):

    cd/c/myprogs/obj -c/hello

  3. 编译程序:

    gcc -o hello hello.m -I/c/GNUstep/GNUstep/System/Library/Headers \

    -L/c/GNUstep/GNUstep/System/Library/Libraries -lobjc -lgnustep-base \

    -fconstant字符串类= NSConstantString

(注意"\"字符允许我们将命令扩展到多行.)

编译时,我收到以下信息性消息:

Info: resolving ___objc_class_name_NSAutoreleasePool by linking to __imp____objc_class_name_NSAutoreleasePool (auto-import)
Info: resolving ___objc_class_name_NSConstantString by linking to __imp____objc_class_name_NSConstantString (auto-import)
Run Code Online (Sandbox Code Playgroud)

运行生成的hello.exe给了我这个:

2009-06-03 14:44:59.483 hello[1240] Hello from Hello.m!
Run Code Online (Sandbox Code Playgroud)