2013-07-29 11 views
7

Mam obowiązek dołączyć flagę -ObjC w "Inne znaczniki Linker" w Xcode, aby użyć komponentu innej firmy. Jednak, gdy dodam tę flagę, dostaję mnóstwo błędów, które wyglądają tak:Flaga -ObjC linker powoduje duplikowanie błędów symboli

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 

Ponownie, to wszystko znika, jeśli nie używać -ObjC flagę. Wygląda na to, że ma coś wspólnego z biblioteką Google Analytics. Jak sobie z tym poradzić?

+2

wydaje się już wliczone _both_ debugowania i normalnej wersji google Analytics biblioteki – nielsbot

+0

prawda, ale deb Biblioteka u ig jest oczywiście potrzebna do debugowania. Nie dostaję tych błędów, gdy nie używam flagi -ObjC. – soleil

Odpowiedz

7

Edytuj konfiguracje wersji i debugowania swojego obiektu docelowego kompilacji. Dołącz wersję debugowania biblioteki w konfiguracji debugowania i wersję inną niż wersja debugowania celu wydania. Nie dołączaj obu w tej samej konfiguracji - dlatego otrzymujesz powtarzające się symbole.

Wykręć dwie biblioteki ze swoimi celami budować, np:

remove libraries from build targets

Następnie szukać „innych flag łącznik” w ustawieniach budować podsystemu i dodać „-lGoogleAnalytics_debug” dla konfiguracji Debug i „- lGoogleAnalytics”dla config wydaniu, np:

set linker flags for debug and release configs

+0

Jak ustawić plik libGoogleAnalytics_debug.a, aby był uwzględniany tylko w konfiguracji debugowania? – soleil

+0

Wydaje mi się, że istnieje ustawienie kompilacji do kontrolowania wariantów biblioteki ... (ale może działać tylko w przypadku dynamicznie ładowanych bibliotek). – nielsbot

+0

Możesz spróbować usunąć bibliotekę z fazy tworzenia biblioteki, a następnie użyć ustawienia "Inne znaczniki linkera" (__OTHER_LDFLAGS__) link do właściwego __libGoogleAnalytics__ – nielsbot

Powiązane problemy