2011-03-13 32 views
10

昨天升級之前,Xcode 3中的所有工作都很完美。所以我完成了升級,重新啓動了我的電腦,並打開了我的舊項目。我不得不重新配置一些像標題路徑這樣的設置,以便我可以開始編譯。我使用的AdWhirl的廣告中介服務,在這一點上我的錯誤開始看像升級到Xcode 4 - 導致構建錯誤的重複符號錯誤的無盡流

duplicate symbol _OBJC_METACLASS_$_SBJSON in /Users/Admin/Desktop/TMapLiteAdwhirl/AdWhirl/MMSDK/libMMSDK.a(SBJSON.o) and 
/Users/Admin/Library/Developer/Xcode/DerivedData/TruxMapLite-bgpylibztethnlhkfkdumpvrjvgy/Build/Intermediates/TruxMapLite.build/Debug-iphoneos/TruxMapLite.build/Objects-normal/armv6/SBJSON.o for architecture armv6 

它引用該庫是針對廣告網絡,我包括在AdWhirl中的一個SDK。兩個「重複符號」都指向相同的文件,但它們使用不同的路徑。如果我仍然擁有XCode 3,我只會嘗試從構建路徑中排除這些庫,但是我不知道Xcode 4如何完成這些工作。我已經嘗試了一切,直到刪除庫和所有關聯文件來自我的項目,但是當我這樣做時,我只會在AdWhirl目錄中的其他庫中獲得相同類型的錯誤。

這是令人難以置信的令人沮喪的,因爲在我升級之前,一切都很順利,我準備提交我的二進制文件。如果有人有任何建議,id很樂意嘗試。謝謝!

+0

我有同樣的問題,我已閱讀@賈斯汀的答案,但我找不到這些參數的檢查 – JonLOo 2011-03-15 15:23:25

回答

5

我只是碰到了類似的問題,並通過編輯我的生成設置解決它:

  1. 選擇在左邊(⌘-1)的Project Navigator從導航列表。
  2. 選擇您的項目文件。
  3. 從編輯器區域出現 的列表中選擇您的目標。
  4. 切換到Build Phases選項卡。
  5. 檢查Link Binary with Libraries和/或Compile Sources爲 重複庫。

現在,我沒有使用相同的庫或項目配置,所以這可能是離基地的方式。

1

我不確定你的設置,但我有類似的問題,並通過更改我的構建位置來修復它。我在xcode 3中將它設置爲絕對路徑,並忘記在xcode 4中更改此設置。更改派生數據選項立即修復了我的所有錯誤。此選項位於首選項 - >位置

5

請確保您沒有導入.m文件。

這個錯誤給我造成了無盡的問題。

+0

你剛剛爲我節省了很多時間:) – gillyD 2013-11-16 14:31:00

0

我剛剛解決了這個問題,用我的一個類的頭文件中的#import語句替換@class。

什麼理論上只應用@class聲明(和#import在實現對應)只是不想用「重複符號」錯誤編譯。

因此,請查看您的@class與#import語句。

0

我發現我的舊源代碼文件夾中有一箇舊的Makefile文件。當我將源文件夾添加到XCode時,我不小心添加了源文件和目標文件。這導致了這些重複的符號錯誤。從我的源文件夾中刪除.o和.lo文件有所幫助。

還有一個。libs文件夾從我的源文件夾從另一箇舊版本。該文件也包含.o文件。刪除它們解決了問題。