如何让TextMate使用导入的文件?

时间:2011-10-18 18:18:25

标签: objective-c macos import textmate file-management

我正在使用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文件并运行?

1 个答案:

答案 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目标。