我在 Windows 上将 gnustep 用于objective-c。如果我将一个类的接口和实现文件与主文件一起保存,它编译时不会出错并给出预期的输出。
以下是示例:
// File "classA.h"
#import <Foundation/Foundation.h>
@interface classA: NSObject
{
int a;
}
-(void) print;
@end
// File "classA.m"
#import "classA.h"
@implementation classA
-(void) print
{
a = 10;
NSLog(@"a = %i", a);
}
@end
// File "test.m"
#import "classA.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"start");
classA *objA = [[classA alloc] init];
[objA print];
[objA release];
NSLog(@"done");
[pool drain];
return 0;
}
但是,如果我将接口和实现文件分开放置,则使用以下命令进行编译
gcc `gnustep-config --objc-flags` -o program program.m -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base
我收到以下错误
undefined reference to `__objc_class_name_myNewClass'
collect2: ld returned 1 exit status
我如何将文件分开并仍然成功编译程序
感谢帮助
问候