簡體   English   中英

如何在Windows上編譯使用NSApplication的GNUstep應用程序?

[英]How do I compile a GNUstep application that uses NSApplication on Windows?

我正在探索在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),我才能夠將自己帶到帶有以下答案的網頁上:

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文件似乎可以單獨運行。

這是一個鏈接器錯誤。 #import是預處理程序指令; 它不會解決鏈接中的錯誤,而且如果您遇到預處理器錯誤,那么您將無法達到鏈接的目的。

您需要鏈接Foundation和AppKit(尤其是后者,對於NSApplication),或者與GNUstep等效的任何鏈接。

在Linux下,您可以使用gcc進行編譯:

gcc ``gnustep-config --objc-flags --gui-libs`` -o main main.m -L /usr/include/GNUstep/ -lobjc -lgnustep-base -lgnustep-gui

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM