インポートされたファイルでテキストメイトを動作させるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/7811832

質問

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 Bundleの「Build&Run」コマンドを使用すると、別のエラーが発生します。

どうすればテキストメイトにインポートすることができますか Rectangle.h ファイルして実行しますか?

役に立ちましたか?

解決

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

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

または、両方のファイルを一緒にコンパイルするだけです。

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

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

編集:

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

xcodeを使用してコンパイルしてエラーを取得すると、おそらく Rectangle.m ファイルは、メインのXcodeターゲットの一部ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top