2011-10-18 12 views
1

私はTextMateを使ってObjective-C演習を行っています。すべてが1つのファイルに入っていれば正常に動作しますが、複数のファイルを扱うとすぐにエラーが発生します。例えば、私は別のRectangle.hファイルをインポートする必要があります:私はCバンドルの「ファイル名を指定して実行」コマンドを使用していインポートされたファイルでTextMateを動作させるにはどうすればよいですか?

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 

#import "Rectangle.h" 

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

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

    [pool drain]; 
    return 0; 
} 

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

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

答えて

1

これはコンパイラエラーではなく、リンカエラーです。 あなたのメインファイルと同じディレクトリにある限り、インポートはうまくいくはずです。

Rectangle.mファイルもあるはずです。両方のファイル(Rectangle.mとメインファイル)をオブジェクトファイル(-c引数)としてコンパイルし、それらをリンクして実行可能ファイルを生成する必要があります。

それとも単に両方のファイルを一緒にコンパイル:あなたのヘッダファイルは別のディレクトリにある場合、あなたは-i-I引数を使用してGCCにそれを指定することができることを

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

注意。

EDIT:

私はXcodeのの言及を見てきました。 XcodeまたはTextMateを使用していますか?

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

+0

答えをありがとう。すべてのファイルは同じディレクトリにあります。私はTextMateを使用しています。私はこれをXcodeで簡単に動作させることができますが、私は練習をしているだけなので、それぞれのために新しいプロジェクトを作るのは大変です。ターミナルに落ちることなく、すぐに変更を加えて実行できるようにしたい。 TextMateを使用すると、すべてが1つのファイル内にある限り、すぐに実行できます。インポートしようとすると、エラーが発生します。 –