我正在探索在 Windows上使用GNUstep编译应用程序.这是我的main.m文件: #import ???/???.hint main(int argc, const char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; [NSApplication sharedApplication]
#import <???/???.h> int main(int argc, const char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; [NSApplication sharedApplication]; [pool release]; }
我意识到这至少是一个不完整的片段,它显然不会做任何事情.我已经尝试了几个不同的import语句,包括Cocoa / Cocoa.h,GNUstepGUI / GMAppKit.h等.但是我总是遇到编译错误,我似乎无法在网上找到帮助.
这是我的编译命令,我从mingw shell运行:
gcc -o test main.m -I /GNUstep/System/Library/Headers/ \ -L /GNUstep/System/Library/Libraries/ -lobjc -lgnustep-base \ -fconstant-string-class=NSConstantString -enable-auto-import
这些是我得到的错误:
c:/WINDOWS/TEMP/ccHxKZG2.o:main.m(.data+0x390): undefined reference to '___objc_class_name_NSApplication' collect2:ld returned 1 exit status
关于#import需要什么,或者我的编译命令需要修复什么的想法?
谢谢!
感谢Peter Hosey,我能够通过谷歌自己找到答案的页面:http://psurobotics.org/wiki/index.php?title=Objective-C
与OS X开发不同,您需要一个“makefile”:
将它放入与源相同的目录中名为“GNUmakefile”的文件中:
include $(GNUSTEP_MAKEFILES)/common.make APP_NAME = MyAppName MyAppName_HEADERS = MyAppName_OBJC_FILES = main.m MyAppName_RESOURCE_FILES = include $(GNUSTEP_MAKEFILES)/application.make
然后执行
make
页面说要执行
openapp ./MyAppName.app
但.app文件夹中的.exe文件似乎独立运行.