编译Objective-C程序时出错

时间:2014-03-13 13:32:57

标签: objective-c gcc gnustep

我正在尝试编译我的第一个Objective-C程序。它只是简单的“编程很有趣!”代码:

#import <Foundation/Foundation.h>  
int main (int argc, const char * argv[])  
{  
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];      
  NSLog (@"Programming is fun!");  
  [pool drain];     
  return 0;  
}  

我下载了gnustep-msys-system-0.30.0-setup.exe和gnustep-core-0.34.0-setup.exe并按顺序安装了它们。我将名为prg1.m的文件(包含前面的代码)复制到/GNUstep/msys/1.0/home/username文件夹中。我打开了GNUstep shell并继续发出以下命令:

gcc -o prg1 prg1.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString

我得到以下输出:

In file included from C:/GNUstep/GNUstep/System/Library/Headers/GNUstepBase/GSCo
nfig.h:281:0,
                 from C:/GNUstep/GNUstep/System/Library/Headers/GNUstepBase/GSVe
rsionMacros.h:219,
                 from C:/GNUstep/GNUstep/System/Library/Headers/Foundation/Found
ation.h:30,
                 from prg1.m:1:
c:\mingw\include\w32api.h:27:2: warning: #warning WARNING - The w32api.h header
file is deprecated and will be removed. [-Wcpp]
 #warning WARNING - The w32api.h header file is deprecated and will be removed.
  ^
In file included from C:/GNUstep/GNUstep/System/Library/Headers/Foundation/NSPor
tMessage.h:30:0,
                 from C:/GNUstep/GNUstep/System/Library/Headers/Foundation/Found
ation.h:99,
                 from prg1.m:1:
C:/GNUstep/GNUstep/System/Library/Headers/Foundation/NSPort.h:210:3: error: unkn
own type name 'WSAEVENT'
   WSAEVENT              eventListener;
   ^

任何人都知道为什么我最终会收到此错误?我一直在谷歌搜索几个小时没有太多运气。任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:-4)

您遇到的问题似乎是您下载的foundation / foundation.h库。这里真正的问题是,当您下载.exe时,您似乎正在使用PC,因此我想知道,为什么要使用Objective-C进行编程?唯一仍然使用Objective-C的平台是iOS / Apple平台,你实际上无法使用Apple计算机进行有效编码。如果您只是想学习Objective-C,因为您计划很快进入iOS,那么我理解但如果您不打算这样做,那么没有理由学习Objective-C,您最好学习Java,C#或C ++ 。

您问题的更具体的答案是WSAEVENT是Windows线程中使用的信号。有可能你的系统没有正确地找到支持它可能是因为删除了w32api.h,它引用了WSAEVENT所在的位置。