我正在使用文字同伴进行一些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目标的一部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top