1

私は TextMate を使用して Objective-C の演習を行っています。すべてが 1 つのファイルにある場合は問題なく動作しますが、複数のファイルを操作しようとするとすぐにエラーが発生します。たとえば、Rectangle.hインポートする別のファイルがあります。

#import "Rectangle.h"

int main (int argc, char *argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    Rectangle *rectangle = [[Rectangle alloc] init];

    [pool drain];
    return 0;
}

実行すると、次のエラーが発生します。

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Rectangle", referenced from:
      objc-class-ref in ccccStDD.o
ld: symbol(s) not found for architecture x86_64

C バンドルの「実行」コマンドを使用しています。Xcode バンドルの「Build & Run」コマンドを使用すると、別のエラーが発生します。

Rectangle.hTextMate にファイルをインポートして実行させるにはどうすればよいですか?

4

1 に答える 1

1

コンパイラエラーではなく、リンカエラーです。メインファイルと同じディレクトリにある限り、インポートは問題ありません。

私はあなたもRectangle.mファイルを持っているべきだと思います。Rectangle.m両方のファイル(およびメインファイル)をオブジェクトファイル(引数付き)としてコンパイル-cしてから、それらをリンクして実行可能ファイルを生成する必要があります。

または、単に両方のファイルを一緒にコンパイルします。

gcc -Wall -framework Foundation -o test test.m Rectangle.m

-iヘッダーファイルが別のディレクトリにある場合は、または-I引数を使用してGCCに指定できることに注意してください。

編集:

Xcodeについての言及を見たばかりです。XcodeまたはTextMateを使用していますか?

Xcodeを使用してコンパイルし、エラーが発生した場合は、Rectangle.mファイルがメインのXcodeターゲットの一部ではない可能性があります。

于 2011-10-18T18:59:23.713 に答える