2013-07-29 426 views
7

我需要在Xcode的「其他鏈接器標誌」中包含-ObjC標誌以使用第三方組件。但是,一旦我添加了這個標誌,我得到的是這樣的錯誤的轉換:-ObjC鏈接器標誌導致重複的符號錯誤

duplicate symbol _OBJC_IVAR_$_GAI.defaultTracker_ in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAI.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAI.o) 
    duplicate symbol _OBJC_IVAR_$_GAI.dispatcher_ in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAI.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAI.o) 
... 
    duplicate symbol _OBJC_CLASS_$_GAIDispatcher in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o) 
    duplicate symbol _OBJC_METACLASS_$_GAIDispatcher in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o) 
    ld: 212 duplicate symbols for architecture armv7s 

同樣,這一切都消失了,如果我不使用-ObjC標記。這似乎與Google Analytics庫有關。我如何解決這個問題?

+2

好像你已經包括_both_的谷歌分析庫 – nielsbot

+0

的調試和普通版的沒錯,但這個deb明顯需要ug庫進行調試。當我不使用-ObjC標誌時,我不會收到這些錯誤。 – soleil

回答

7

編輯構建目標的發行版和調試配置。在調試配置中包含庫的調試版本,以及發佈目標的非調試版本。不要在同一個配置中包括這兩個 - 這就是爲什麼你會得到重複的符號。

從構建目標中刪除這兩個庫,如:

remove libraries from build targets

然後搜索您的構建目標的設置「其他連接標誌」,並增加「-lGoogleAnalytics_debug」爲調試配置和「 - lGoogleAnalytics」爲版本的配置,例如:

set linker flags for debug and release configs

+0

如何將libGoogleAnalytics_debug.a設置爲僅包含在調試配置中? – soleil

+0

我認爲有一個構建設置來控制庫變體...(但可能只適用於動態加載的庫) – nielsbot

+0

您可以嘗試從庫構建階段中刪除庫,然後使用「其他鏈接器標誌」(__OTHER_LDFLAGS__)設置爲鏈接正確__libGoogleAnalytics__ – nielsbot

相關問題