2011-01-15 5 views
0

collect2 : ld가 Xcode에서 종료 상태 오류 1을 반환했습니다.

Command /Developer/usr/bin/gcc-4.2 failed with exit code 1 

전체 로그가 열렸을 때 오류는 다음과 같이보다 정확하게 표시됩니다.

collect2: ld returned 1 exit status 

이 간단한 코코아 스크립트에서 가져온 것입니다 :

#import "Controller.h" 

@implementation Controller 

int skillcheck (int level, int modifer, int difficulty) 
{ 
    if (level + modifer >= difficulty) 
    { 
     return 1; 
    } 
    if (level + modifer <= difficulty) 
    { 
     return 0; 
    } 

} 

int main() 
{ 
    skillcheck(10, 2, 10); 
} 

@end 

the. h 파일은 다음과 같습니다.

// 
// Controller.h 
// 
// Created by Duo Oratar on 15/01/2011. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import <Cocoa/Cocoa.h> 

@interface Controller : NSObject 
{ 
    int skillcheck; 
    int contestcheck; 
} 

@end 

오류가 발생한 줄을 지정하지 않았습니까?이 오류의 원인을 누구나 알 수 있습니까? 더 중요한 것은 어떻게 수정해야합니까?

이제 클래스를 제거했습니다.

// 
// Controller.m 
// 
// Created by Duo Oratar on 15/01/2011. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import "Controller.h" 

int skillcheck (int level, int modifer, int difficulty) 
{ 
    if (level + modifer >= difficulty) 
    { 
     return 1; 
    } 
    if (level + modifer <= difficulty) 
    { 
     return 0; 
    } 

} 

int main() 
{ 
    skillcheck(10, 2, 10); 
} 

및 .h 파일에 대해 :

// 
// Controller.h 
// 
// Created by Duo Oratar on 15/01/2011. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import <Cocoa/Cocoa.h> 

및 로그는 다음과 같습니다.

빌드/디버그/Calculator.app/내용/MacOS/계산기 일반 x86_64 cd/Users/kids/Desktop/계산기 setenv MACOSX_DEPLOYMENT_TARGET 10.6 /개발자/usr/bin/gcc-4.2 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -L/Users/kids/Desktop/계산기/빌드/디버그 -F/사용자/키즈/데스크톱/계산기/빌드/디버그 -filelist/사용자 /kids/Desktop/Calculator/build/Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/Calculator.LinkFileList -mmacosx-version-min = 10.6 -framework Cocoa -o/Users/kids/Desktop/Calculator/빌드/디버그/Calculator.app/내용/MacOS/계산기

ld :/사용자/키즈/데스크톱/계산기/빌드/Calculat 중복 기호 _main or.build/Debug/Calculator.build/Objects-normal/x86_64/Controller.o 및 /Users/kids/Desktop/Calculator/build/Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/main.o collect2 : ld가 1 종료 상태를 반환했습니다. 명령 /Developer/usr/bin/gcc-4.2가 종료 코드 1과 함께 실패했습니다.

ld : 중복 기호 _main /Users/kids/Desktop/Calculator/build/Calculator.build/ Debug/Calculator.build/Objects-normal/x86_64/Controller.o 및 /Users/kids/Desktop/Calculator/build/Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/main.o

/developer/usr/bin/gcc-4.2 명령이 종료 코드 1에 실패했습니다.

+0

Controller.m이 현재 대상입니까? –

+0

"더 정확하게"? 정말로 - 우리가 더 많은 로그를 볼 수 있을까요? – trojanfoe

+0

빌드 결과를 열면 오류 오른쪽에 여러 줄의 텍스트처럼 보이는 작은 단추가 표시됩니다. 그것을 클릭하면 실패까지 이어지는 전체 텍스트가 표시됩니다. 그것이 우리가 돕기 위해 필요한 것입니다. – andyvn22

답변

0

, 다음입니다 :

int skillcheck (int level, int modifer, int difficulty); 

뿐 아니라 : INT을 정의 할

int skillcheck; 

변수이며 그것을 반환하는 함수가 아닙니다. 동일한 내용은 콘테스트 검사에 해당됩니다.

먼저 언어의 기초를 배우기 위해 Objective-C에 대해 더 많이 읽으라고 제안합니다.

업데이트 :

또한 당신이 주요 ()의 두 정의, Controller.m 하나 하나 main.m.이 보인다 당신은 오직 하나만 가질 수 있습니다.

+0

그래, 덕분에 오류가 수정되었지만 지금은 원래 오류가 있습니다. – user573949

+0

지금 전체 오류 메시지가 무엇입니까? "명령 /Developer/usr/bin/gcc-4.2가 종료 코드 1로 실패"및 "collect2 : ld가 반환 된 1 종료 상태"는 그 중 일부에 지나지 않습니다. 내 업데이 트를 참조하십시오. – Codo

+0

그게 다야! 이제 main()이 제거 된 상태로 잘 작동합니다. – user573949

0

무엇을 하려는지 명확하지 않습니다. 이 예에서는 Objective-C 클래스가 필요하지 않습니다. 이것은 C 함수를 호출하는 main() 함수이며 Objective-C가 전혀 관여하지 않습니다.

귀하의 질문에 대한 언어와 코드 작성 방법에서 나는 귀하가 Cocoa 프로그래밍에 익숙하지 않다고 생각합니다. (re)read this을 원할 수도 있습니다.

더 많은 정보가 컴파일러/링커에 의해 차단되어야합니다. 빌드 창에서 "모든 메시지"가 선택되어 있는지 확인하십시오.당신이 (귀하의 경우 필요 없음) skillcheck를 선언하려면

+0

예 코코아 프로그래밍을 처음 접해 보았습니다. 일반적으로 프로그래밍하지는 않았지만 스크립트에 클래스가 있는지조차 알지 못했습니다. 어디에 있습니까? – user573949

+0

링크 된 문서를 읽으십시오. 그런 다음 '@interface 행은 무엇을합니까?'라는 질문에 대답하십시오. – bbum

+0

그것은 지금 제거한 클래스를 만듭니다. – user573949

관련 문제