Objective c &引用;Can';找不到'的协议声明;非应用程序授权人'&引用;在GNUstep for Windows上?

Objective c &引用;Can';找不到'的协议声明;非应用程序授权人'&引用;在GNUstep for Windows上?,objective-c,windows,gnustep,Objective C,Windows,Gnustep,我正在尝试编译另一个程序员在Mac上编写的Objective-C代码。我正在使用GNUstep for Windows尝试在我的家用计算机上运行此代码。我真的需要他的代码位来运行,并且对Objective-C几乎没有经验(阅读:零)。下面是代码: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

我正在尝试编译另一个程序员在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;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
得到一个错误,上面写着“找不到'nsapplicationedelegate'的协议声明”,还有几个看起来像语法错误的错误(程序中的“@”,以及一些不存在的预期标识符)

我一直在用谷歌搜索这个问题,似乎在某种程度上,协议声明在Objective C中发生的方式可能已经改变了?人们谈论10.6和以前版本OSX之间的区别。。。我不确定这是否与我所面临的问题相同,或者如何使GNUstep使用这种较旧的语法。再说一次,我不知道我在说什么,只是刚刚开始进入这个编程,所以如果我遗漏了重要信息,请让我知道


谢谢你的时间

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

编辑:


再想一想,它看起来可能是一个非正式的协议,所以您可以将它完全从头文件中取出(连同尖括号一起,也将其删除),然后一切都会正常工作。

我也遇到了同样的问题。但是从@interface AntennaPatternGenAppDelegate:NSObject nsapplicationedelegate{
它运行良好(编译时没有错误).

这些是我得到的确切错误:AntennaPatternAgAppDelegate。h:10:1:错误:找不到“NSApplicationedLegate”AntennaPatternAgAppDelegate的协议声明。h:14:1:错误:程序AntennaPatternAgentAppDelegate中的杂散“@”。h:14:29:错误:在“NSWindow”AntennaPatternAgentGene之前应为“=”、“、”、”、“;”、“;”、“asm”或“\uAttribute”AppDelegate.m:9:1:错误:预期标识符或“(”在“im实现”AntennaPatternAgentAppDelegate.m:11:1:错误:程序AntennaPatternAgentAppDelegate中出现“@”。m:13:71:错误:预期“;”在“之前”{'Token我认为没有正式协议。它必须是非正式协议。你应该能够删除它,即删除
部分。删除该部分确实可以消除列表中的第一个错误,谢谢!有人知道如何消除其他错误吗?在我看来,这里的语法似乎没有错误,这些程序表面上在某个系统上编译得很好,因为它们已经被使用过了。我在这里使用了错误的版本/选项吗?谢谢!您是否有相应的
@end
用于
@interface
?我认为使用GNUstep Makefiles来编译代码会更容易。这会阻止您使用om忘记传递一些编译器标志。可以在此处找到教程:
gcc -o AntennaPatternGenAppDelegate AntennaPatternGenAppDelegate.m -I /GNUstep/System/Library/Headers \
-L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base