我正在使用TextMate做一些Objective-C练习。当一切都在一个文件中时,它工作正常,但只要我想处理多个文件就会出错。例如,我有一个单独的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;
}
Running会出现此错误:
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 bundle的“Run”命令。使用Xcode软件包的“Build& Run”命令会给我一个不同的错误。
如何让TextMate导入我的Rectangle.h
文件并运行?
答案 0 :(得分: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目标。