我需要在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库有关。我该如何解决这个问题?
答案 0 :(得分:7)
编辑构建目标的发布和调试配置。在调试配置中包含库的调试版本,在发布目标中包含非调试版本。不要在同一个配置中包含这两个 - 这就是你得到重复符号的原因。
从构建目标中删除两个库,例如:
然后在构建目标的设置中搜索“其他链接器标志”,并为Debug配置添加“-lGoogleAnalytics_debug”,为Release配置添加“-lGoogleAnalytics”,例如: