Как я могу заставить Textmate работать с импортными файлами?

StackOverflow https://stackoverflow.com/questions/7811832

Вопрос

Я использую Textmate, чтобы выполнить некоторые упражнения для объективных 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» дает мне другую ошибку.

Как я могу сделать Textmate импортировать мой 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