2012-01-15 34 views
0

這是我獲取的錯誤代碼,當我嘗試構建測試時,如何找到此錯誤的原因。我已經在xcode中複製了2個文件,並對複製進行了細微更改以創建第二個屏幕。重複的符號_calculate_string錯誤消息iPhone

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

下次請在您的代碼格式上工作,謝謝。 – 2012-01-15 14:16:58

+0

你是否記得在'.h'和'.m'中改變類的名字? – 2012-01-15 14:19:57

+0

@ Paul.s _calculate_string在我看來似乎是一個函數名稱,而不是一個類名稱。這是我的答案來自哪裏。如果我錯了,請告訴我,這樣我可以糾正我的答案。 – 2012-01-15 14:25:09

回答

2

基本上,這是從C.

莖如果,在一個.c文件我有以下的錯誤:

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

並且在另一文件I具有這樣的功能:

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

當編譯器鏈接您的項目,你叫

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)定義的方法的兩倍,但添加靜態限定符給它,它告訴接頭這是可以使用該功能的唯一文件。老實說,爲了簡單起見,我建議只使用靜態限定符,但這只是我的偏好,當涉及到這些問題時。

0

這個錯誤通常來自您已經完成循環引用或創建兩個具有相同名稱的類文件。