我如何让文本伴侣使用导入的文件?
-
26-10-2019 - |
题
我正在使用文字同伴进行一些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;
}
运行给出此错误:
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的“运行”命令。使用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