duplicate symbol error
场景复述
工程中用到了 MarqueeLabel 第三方,现在集成导航功能时发现libbaiduNaviSDK.a也有用到MarqueeLabel这个第三方,只不过改成BNMarqueeLabel.
文件不同,忘记处理全局变量而造成符号冲突
现在第三方库中如果用到的其他第三方的文件基本都会重命名(避免相同文件名会造成符号冲突),一般不会出现出现符号链接错误,个别情况就是(文件虽然重命名但是里面的 全局变量并不是static 类型)
eg:百度导航demo(SDKv3.1.0) 与 MarqueeLabel 出现 符号冲突
把_kMarqueeLabelAnimationCompletionBlock前面的下划线去掉然后进行全局搜索:
解决方法:
在 kMarqueeLabelAnimationCompletionBlock 添加static关键字
文件相同造成符号冲突
思路:找到冲突的*.O文件所在静态库,在库中删除即可.
参考链接:修改TARGETS->Build Setting->Other Linker Flags 添加: -force_load 静态库在工程中的路径(这种方法可以解决上面两种问题)
注意添加的时候先添加libbaiduNaviSDK.a的依赖库,不然会报错.
参考链接: