[英]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.