2012-01-15 3 views
0

이것은 테스트를 위해 빌드 할 때 발생하는 오류 코드입니다.이 오류의 원인을 어떻게 찾을 수 있습니까? 나는 xcode에서 2 개의 파일을 복제했고 두 번째 화면을 만들기 위해 복사를 미묘하게 변경했다.중복 기호 _calculate_string 오류 메시지 iPhone

void myFunction(int myArg) 
{ 
    printf("%i", myArg); 
} 

그리고 다른 파일에 나는이 기능을 가지고 :

ld: duplicate symbol _calculate_string in /Users/Lucky3kj/Library/Developer/Xcode /DerivedData/MiniCalculator-ebxkovztnlrphaahncircdyuwjgc/Build/Intermediates/MiniCalculator.build/Debug-iphoneos/PipeFitter.build/Objects-normal/armv7/RollingOffsetLeftViewController.o and /Users/Lucky3kj/Library/Developer/Xcode/DerivedData/MiniCalculator-ebxkovztnlrphaahncircdyuwjgc/Build/Intermediates/MiniCalculator.build/Debug-iphoneos/PipeFitter.build/Objects-normal/armv7/RollingOffsetAnyAngleViewController.o for architecture armv7 
    Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1 
+0

다음 번에 코드 서식을 작성하십시오. 감사합니다. –

+0

'.h'와'.m' 둘 다 클래스의 이름을 바꾸는 것을 잊지 않았습니까? –

+0

@ Paul.s _calculate_string은 클래스 이름이 아닌 함수 이름처럼 보입니다. 내 대답은 어디에서 오는거야. 내가 틀렸다면 제 대답을 고칠 수 있도록 말해주십시오. –

답변

2

기본적으로,이 하나 개의 .c 파일에서 나는 다음과 같은 가지고있는 경우 C.

에서 비롯된 오류는 다음과 같습니다

void myFunction(int myArg) 
{ 
    printf("MyArg is: %i", myArg); 
} 

컴파일러는 프로젝트를 링크 할 때, 당신은

전화3210
myFunction(10); 

컴파일러는 호출하는 당신의 방법의 버전을 알고하지 않기 때문에이 솔루션은 다음 중 하나입니다

1) 번 방법을 정의하고 기능의 프로토 타입을 포함한다. 예 :

// instead of implementing myFunction here, we do this: 
void myFunction(int myArg); 
// and implement myFunction in another file. 

-(void) viewDidLoad { 
    myFunction(10); 
} 

2) 번 방법을 정의하지만이이 기능을 사용할 수있는 유일한 파일인지 링커 지시 그것을 정적 규정을 추가한다.

// FileOne.c 

static void myFunction(int myArg) 
{ 
    printf("myArg is: %i", myArg); 
} 

// FileTwo.c 

static void myFunction(int myArg) 
{ 
    printf("%i", myArg); 
} 

솔직히 간단히 말해서 정적 한정자를 사용하는 것이 좋지만 이러한 문제에 대해서는 제 선호도가 좋습니다.

0

이 오류는 일반적으로 순환 참조를 수행하거나 이름이 같은 두 개의 클래스 파일을 만드는 경우에 발생합니다.