2011-10-18 4 views
1

저는 TextMate를 사용하여 Objective-C 연습을하고 있습니다. 모든 것이 하나의 파일에있을 때 제대로 작동하지만 여러 파일을 사용하려고 할 때 오류가 발생합니다. 예를 들어, 나는 별도의 Rectangle.h 파일을 가져올 수있다 : 나는 C 번들의 "실행"명령을 사용하고가져온 파일에 대해 TextMate를 사용하려면 어떻게해야합니까?

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 

:

#import "Rectangle.h" 

int main (int argc, char *argv[]) { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

    Rectangle *rectangle = [[Rectangle alloc] init]; 

    [pool drain]; 
    return 0; 
} 

실행이 오류를 제공합니다. Xcode 번들의 "Build & 실행"명령을 사용하면 다른 오류가 발생합니다.

TextMate에서 내 Rectangle.h 파일을 가져 와서 실행하려면 어떻게해야합니까?

답변

1

이것은 컴파일러 오류가 아니며 링커 오류입니다. 가져 오기가 기본 파일과 동일한 디렉토리에 있으면 좋습니다.

Rectangle.m 파일도 있어야합니다. 두 파일 (Rectangle.m과 주 파일)을 모두 오브젝트 파일 (-c 인수)로 컴파일 한 다음 링크를 연결하여 실행 파일을 생성해야합니다.

또는 단순히 두 파일을 함께 컴파일 헤더 파일을 별도의 디렉토리에있는 경우, 당신은 -i 또는 -I 인수를 사용하여 GCC이를 지정할 수 있다는

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

참고.

편집 :

난 그냥 엑스 코드의 언급을 보았다. Xcode 또는 TextMate를 사용하고 있습니까?

Xcode를 사용하여 컴파일하고 오류가 발생하는 경우 Rectangle.m 파일이 주요 Xcode 대상의 일부가 아닌 것 같습니다.

+0

답변 해 주셔서 감사합니다. 모든 파일은 같은 디렉토리에 있습니다. TextMate를 사용하고 있습니다. Xcode를 사용하면이 작업을 쉽게 수행 할 수 있지만, 연습을하고 있기 때문에 각각에 대해 새로운 프로젝트를 만드는 것은 너무 어렵습니다. 터미널로 떨어지지 않고 신속하게 변경하고 실행할 수 있기를 원합니다. TextMate는 모든 것이 하나의 파일에있는 한 빨리 실행할 수 있습니다. 가져 오기를 시도하면 오류가 발생합니다. –

관련 문제