Как я могу заставить TextMate работать с импортированными файлами? - PullRequest
1 голос
/ 18 октября 2011

Я использую 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 файл и запустить?

1 Ответ

1 голос
/ 18 октября 2011

Это не ошибка компилятора, а ошибка компоновщика.Ваш импорт должен быть в порядке, если он находится в том же каталоге, что и ваш основной файл.

Полагаю, у вас также должен быть файл 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...