インポートされたファイルでテキストメイトを動作させるにはどうすればよいですか?
-
26-10-2019 - |
質問
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ターゲットの一部ではありません。
所属していません StackOverflow