-ObjC链接器标志导致重复的符号错误

时间:2013-07-29 18:01:34

标签: ios objective-c xcode compiler-errors static-libraries

我需要在Xcode的“Other Linker Flags”中包含-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库有关。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

编辑构建目标的发布和调试配置。在调试配置中包含库的调试版本,在发布目标中包含非调试版本。不要在同一个配置中包含这两个 - 这就是你得到重复符号的原因。

从构建目标中删除两个库,例如:

remove libraries from build targets

然后在构建目标的设置中搜索“其他链接器标志”,并为Debug配置添加“-lGoogleAnalytics_debug”,为Release配置添加“-lGoogleAnalytics”,例如:

set linker flags for debug and release configs