2011-07-12 82 views
0

我正在嘗試編譯Mac上其他程序員編寫的一些Objective-C代碼。我正在使用GNUstep for Windows試圖讓我的家用電腦上運行這些代碼。我真的只需要他的代碼位就可以運行,並且在Objective-C中幾乎沒有(讀取:零)經驗。下面是代碼:「在GNUstep for Windows上找不到'NSApplicationDelegate'的協議聲明?

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
// AntennaPatternGenAppDelegate.m 
// AntennaPatternGen 
// 
// 

#import "AntennaPatternGenAppDelegate.h" 

@implementation AntennaPatternGenAppDelegate 

@synthesize window; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 
} 

@end 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

這裏是頭文件:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
// 
// AntennaPatternGenAppDelegate.h 
// AntennaPatternGen 
// 
// 

#import <Cocoa/Cocoa.h> 

@interface AntennaPatternGenAppDelegate : NSObject <NSApplicationDelegate> { 
    NSWindow *window; 
} 

@property (assign) IBOutlet NSWindow *window; 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

我使用下面的命令嘗試編譯:

gcc -o AntennaPatternGenAppDelegate AntennaPatternGenAppDelegate.m -I /GNUstep/System/Library/Headers \ 
-L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base 

,並得到一個錯誤說「找不到'NSApplicationDelegate'的協議聲明,以及幾個看起來像語法錯誤的錯誤(程序中的'@',以及一些不存在的預期標識符)

我一直在Google上搜索這個問題,它看起來像目標C中的協議聲明發生的方式可能在某些時候發生了變化?人們談論10.6和以前版本的OSX之間的區別......我不確定這是我面對的同樣的問題,還是如何使GNUstep能夠使用這種較舊的語法。再一次,我幾乎不知道我在說什麼,剛開始進入這個編程,所以如果我留下了關鍵信息,請讓我知道。

謝謝你的時間!

+0

這些是我得到確切的錯誤:AntennaPatternGenAppDelegate.h:10:1:錯誤:無法找到協議聲明 'NSApplicationDelegate' AntennaPatternGenAppDelegate.h:14:1:錯誤:流浪 '@' 的程序 AntennaPatternGenAppDelegate.h:14:29:error:expected'=',',';','asm'或'_ _attribute__'before'NSWindow' AntennaPatternGenAppDelegate.m:9:1:error:expected identifier或 '(' 前 'IM plementation' AntennaPatternGenAppDelegate.m:11:1:錯誤:在程序雜散 '@' AntennaPatternGenAppDelegate.m:13:71:錯誤:預期 ';' 前 '{' 令牌 – Eric

+1

我不不認爲有一個正式的協議,它必須是第四個e非正式協議。你應該可以刪除它,即刪除''部分。 –

+0

刪除該部分的確清除了列表中的第一個錯誤,謝謝!有沒有人有任何想法如何擺脫其他錯誤?在我看來,這裏的語法是不對的,而且這些程序在某些系統上顯然編譯得很好,因爲它們已經被使用了。我在這裏使用了錯誤的版本/選項嗎?謝謝! – Eric

回答

0

我從來沒有使用GNUStep,但看起來他們可能已經重命名協議GSAppDelegateProtocol。你可以嘗試改變對NSApplicationDelegate的任何引用,看看會發生什麼。

編輯:

關於第二個想法,它看起來像它可能是一個非正式的協議,那麼你很可能只是把它拿出來的頭文件的全部(連同尖括號,刪除那些太)一切都應該正常工作。

1

我也有同樣的問題。但刪除此NSApplicationDelegate@interface AntennaPatternGenAppDelegate:NSObject NSApplicationDelegate { 它工作正常(編譯沒有錯誤)。