objective-c - 如何编译在 Windows 上使用 NSApplication 的 GNUstep 应用程序?

标签 objective-c windows cocoa gcc gnustep

我正在探索在 Windows 上使用 GNUstep 编译应用程序。这是我的 main.m 文件:

#import <???/???.h>

int main(int argc, const char *argv[]) 
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    [NSApplication sharedApplication];
    [pool release];
}

我意识到至少可以说这是一个不完整的片段,它显然不会做任何事情。我尝试了几种不同的导入语句,包括 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,我才得以用 Google 搜索到包含答案的页面:

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 文件似乎可以自行运行。

关于objective-c - 如何编译在 Windows 上使用 NSApplication 的 GNUstep 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429638/

相关文章:

objective-c - 将字符串添加到数组

ios - -[NSConcreteMutableAttributedString _encodingCantBeStoredInEightBitCFString]:无法识别的选择器已发送到实例

windows - 添加到防火墙异常(exception)列表

cocoa - NSApplicationMain() 中的 strlen 发生奇怪的 cocoa 崩溃

ios - 我如何在 viewDidLoad 中执行 UIView animateWithDuration? IOS 7

ios - 在 UIView 中动态居中对齐不同大小的多个 UIButton

c# - 我该如何修复“"error CS0009: Metadata file "System.Xml.dll'无法打开-图像太小”?

windows - 适用于 Windows 的最佳轻量级 Web 服务器(仅静态内容)

cocoa - 如何以编程方式检索 Core Data 应用程序的表选择和表行?

objective-c - NSString - 仅转换为纯字母表(即删除重音符号+标点符号)