2013-01-16 55 views
8

,當我嘗試添加自己的理論框架來構建一個項目,我遇到了在Xcode 4.5.1「重複的符號」錯誤。我驗證了重複的框架文件,但沒有。但是當我將這個框架添加到一個項目中時,它會抱怨這些錯誤。請建議..提前重複的符號錯誤在Xcode

duplicate symbol _NXArgc in: 
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol _NXArgv in: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol ___progname in: 
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol _environ in: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol start in: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 
ld: 8 duplicate symbols for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

謝謝..

+2

我有同樣的問題,但是當我開始在我的iPhone應用程序運行了。所以,我只有在我的模擬器中有這個問題... – Roger

+0

同樣在這裏,只在模擬器上... – Redwarp

+0

我也有這個具體問題。尋找答案,發佈獎金。 – BadPirate

回答

9

這些符號是crt.o,標準C庫的啓動代碼。通常它應該是可執行文件初始化全局變量和對象的入口點。它也會調用你的主要功能。

但是對於一個框架,你不應該在你的二進制文件中包含它,因爲框架不應該有main。 我相信你在你的框架的目標版本設置中將「與標準庫鏈接」選項設置爲「YES」。這將把crt.o鏈接到你的框架中。當你將框架鏈接到一個項目中時,會出現重複的符號。

請在您的構建設置中將選項「Link with Standard Library」設置爲NO。

+8

當我這樣做時,我得到更多的錯誤:體系結構x86_64未定義的符號:... – Kaptain

+2

當我在標準庫設置鏈接到否在構建設置,我有177編譯器錯誤,而不是1 –

13

我不得不使用兩個第三方框架同樣的問題。我通過在構建設置中從「其他鏈接器標誌」中刪除「all_load」來解決這個問題。

5

您的應用程序提供,其中有8個重複符號的實現。

有許多的方法,你可能已經做到了這一點:

你有兩個模塊聲明同一類。也許一個不再需要?

您在這兩個文件.M導入任何頭文件和.h :-(從一個地方刪除。)

您在某處導入任何.m文件。 : - (導入.h文件而不是.m文件)

您已在任何.h文件中的@interface {}的外部(上方)中定義並聲明瞭任何const變量,它可能會被重複。 : - (在.m文件中執行)

0

如果在應用程序中的.h文件中正確定義像常量這樣的全局變量,請檢查。

定義全局變量的正確方法是在.h文件中使用extern變量。

注意:這不是以前的Xcode版本的問題。我遇到了Xcode 6.3的問題,並且解決了。

0

如果你有這個問題,只有當您在模擬器中運行應用程序時,它會通過刪除本地文件夾

~/Library/Developer/CoreSimulator 

解決的Xcode將在第一次構建並運行後恢復。 請確保您備份任何設置在此之前(尤其是那些到仿真設備相關)。

在測試版本的Xcode 7.2.1(7C1002)