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

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

我需要在 Xcode 的“其他链接器标志”中包含 -Objcflags才能使用第 3 方组件。但是,一旦我添加了这个标志,我就会收到一系列如下所示的错误:

    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

同样,如果我不使用 -Objcflags,这一切都会消失。它似乎与 Google Analytics 库有关。我该如何解决这个问题?

最佳答案

编辑构建目标的发布和调试配置。在调试配置中包括库的调试版本,以及发布目标的非调试版本。不要在同一配置中同时包含这两者——这就是您获得重复符号的原因。

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

remove libraries from build targets

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

set linker flags for debug and release configs

关于ios - -ObjC 链接器标志导致重复符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931020/

相关文章:

ios - 错误 : User interaction disabled in lower parts of UIScrollView

javascript - Cordova:尝试发送 ID 的第二个回调:相机

iOS 'reportAchievementWithCompletionHandler' 弃用

ios - 解析目标 - C 到 Swift iOS

ios - 如何知道在框架中定义了一些功能?

c++ - 自定义子组件已添加但不可见

iphone - Cocos2d:CCLabelTTF调用函数?

iOS:嵌入在 UIViewController 中的 Stripe 结帐 UI

ios - Grand Central Dispatch 是如何真正使用操作系统的?

objective-c - 如何解压epub格式的文件?