“在GNUstep for Windows上找不到'NSApplicationDelegate'的协议声明”?

时间:2011-07-12 19:59:56

标签: objective-c windows gnustep

我正在尝试编译一些由Mac上的其他程序员编写的Objective-C代码。我正在使用GNUstep for Windows尝试在家用计算机上运行此代码。我真的只需要运行他的代码位,并且使用Objective-C几乎没有(读取:零)经验。这是代码:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  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'的协议声明”,以及几个看起来像语法错误的错误(程序中的'@',以及一些不存在的预期标识符)

我一直在谷歌搜索这个问题,似乎协议声明在Objective C中发生的方式可能在某些时候发生了变化?人们谈论10.6和以前版本的OSX之间的区别...我不确定这是否是我面临的同样问题,或者如何使GNUstep使用这种旧语法。再一次,我几乎不知道我在说什么,只是开始进入这个编程,所以如果我把关键信息留下来,请告诉我。

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

我也有同样的问题。但是从 @interface AntennaPatternGenAppDelegate:NSObject NSApplicationDelegate {中删除 NSApplicationDelegate 它工作正常(编译时没有错误)。

答案 1 :(得分:0)

我从未使用过GNUStep,但看起来他们可能已经重命名了协议GSAppDelegateProtocol。您可以尝试更改对NSApplicationDelegate的任何引用,并查看会发生什么。

修改

第二个想法,看起来它可能是一个非正式的协议,所以你可能只是把它从头文件中完全取出(连同尖括号,也删除它们),一切都应该正常工作。