【问题标题】:How can I get TextMate to work with imported files?如何让 TextMate 处理导入的文件?
【发布时间】:2011-10-18 18:18:25
【问题描述】:

我正在使用 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 包的“Build & Run”命令会给我一个不同的错误。

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

【问题讨论】:

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


    【解决方案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 目标的一部分。

    【讨论】:

    • 感谢您的回答。所有文件都在同一个目录中。我正在使用 TextMate。我可以使用 Xcode 轻松实现这一点,但由于我只是在做练习,因此为每个人创建一个新项目太多了。我希望能够快速进行更改并运行它,而不会退出终端。只要所有内容都在一个文件中,TextMate 就可以让我快速运行。当我尝试导入时,错误来了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 2021-11-13
    相关资源
    最近更新 更多