Windows の 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
ファイルを別々に保ちながら、プログラムを正常にコンパイルするにはどうすればよいですか
手伝ってくれてありがとう
よろしく