1

我正在使用 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;
}

运行给出了这个错误:

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 包的“构建和运行”命令会给我一个不同的错误。

如何让 TextMate 导入我的Rectangle.h文件并运行?

4

1 回答 1

1

这不是编译器错误,而是链接器错误。您的导入应该没问题,只要它与您的主文件位于同一目录中。

我想你也应该有一个Rectangle.m文件。您需要将两个文件(Rectangle.m和您的主文件)编译为目标文件(使用-c参数),然后将它们链接在一起以生成可执行文件。

或者简单地将两个文件一起编译:

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

-i请注意,如果您的头文件位于单独的目录中,您可以使用or-I参数将其指定给 GCC 。

编辑:

我刚刚看到提到 Xcode。您使用的是 Xcode 还是 TextMate?

如果您使用 Xcode 进行编译并出现错误,那么您的Rectangle.m文件很可能不是您的主要 Xcode 目标的一部分。

于 2011-10-18T18:59:23.713 回答