0

我正在尝试编译一些由另一位程序员在 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 使用这种旧语法。再说一次,我几乎不知道我在说什么,刚刚开始接触这个编程,所以如果我遗漏了重要信息,请告诉我。

谢谢你的时间!

4

2 回答 2

1

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

于 2012-01-03T13:08:48.023 回答
0

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

编辑:

再想一想,它看起来可能是一个非正式的协议,因此您可能只需将其完全从头文件中取出(连同尖括号一起,也删除它们),一切都应该正常工作。

于 2011-07-12T20:55:07.177 回答