2011-08-26 91 views
1

我已經看到這個錯誤的幾個帖子,我已經閱讀了所有這些但沒有成功,我會很高興的解決方案。下面是輸出編譯時我收到...Xcode 4 - 失敗,退出代碼1錯誤

ld: duplicate symbol _pointOffsetArray in /Users/admin/Library/Developer/Xcode/DerivedData/Display_Cubes_2-acsuoldwvhwsnjfowhhxfsmdeekc/Build/Intermediates/Display Cubes 2.build/Debug-iphonesimulator/Display Cubes 2.build/Objects-normal/i386/Display_Cubes_2ViewController.o and /Users/admin/Library/Developer/Xcode/DerivedData/Display_Cubes_2-acsuoldwvhwsnjfowhhxfsmdeekc/Build/Intermediates/Display Cubes 2.build/Debug-iphonesimulator/Display Cubes 2.build/Objects-normal/i386/Display_Cubes_2AppDelegate.o for architecture i386 
collect2: ld returned 1 exit status 
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1 
+0

你有一個叫pointOffsetArray符號(或大意的東西?)你能提供的聲明/定義的代碼? – fbrereto

回答

2

這意味着您可能在兩個不同的文件中有一個名爲_pointerOffsetArray(或類似的東西)的全局符號defined。尋找在那裏這個符號是全局定義的所有實例,如果你發現兩個不同的聲明:

  1. 如果他們只需要在各自的文件,與static關鍵字限定它們。

  2. 如果符號需要在兩個文件之間「共享」,然後確保這是在只有一個地方定義。您可以通過使用extern限定符聲明它(在這個其他文件中)在另一個文件中引用它。

如果你還不知道,你真的應該對externstatic預選賽是如何工作的閱讀起來。

在你的情況下,符號可能在Display_Cubes_2ViewController.mDisplay_Cubes_2AppDelegate.m(或者很可能是你在導入這兩個定義這個符號的文件中的頭文件)中定義了兩次。

+0

解決了,謝謝......你描述的到底是什麼... :) _pointerOffsetArray未聲明(至少我沒有發現它),但我已經在這兩個文件被導入一個頭文件 – alexpov

+0

你的意思是符號'pointerOffsetArray' **在兩個不同的文件中定義**,而不是*聲明*。 '的extern INT pointerOffsetArray;'是一個聲明,而'詮釋pointerOffsetArray;'(在全局範圍內)是一種定義。 –

+0

@亞當感謝您糾正我。修復了答案。 –

0

我相信重複的符號是Display_Cubes_2ViewControllerDisplay_Cubes_2AppDelegate。嘗試重命名它們。

此外,你可能想嘗試清洗你的build文件夾與

命令+ Option + Shift鍵+ K

雖然這可能看起來像一條毯子的解決方案,它幫我解決一些愚蠢的編譯過去的問題。祝你好運!

相關問題