我在windows上使用gnustep作爲objective-c。如果我將一個類的接口和實現文件與主文件一起保存,它將無錯地編譯並給出預期的輸出。objective c gnustep - 無法分離接口和實現文件
以下是例子:
// 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
我如何保持文件分開並仍然編譯程序
感謝您的幫助
問候
您應該嘗試使用GNUstep-Make的Makefiles,它比手動調用編譯器更全面。看看這個教程:http://www.gnustep.it/nicola/Tutorials/WritingMakefiles/index.html – MKroehnert