第三方庫衝突

duplicate symbol error

場景複述

工程中用到了 MarqueeLabel 第三方,如今集成導航功能時發現libbaiduNaviSDK.a也有用到MarqueeLabel這個第三方,只不過改爲BNMarqueeLabel.git

文件不一樣,忘記處理全局變量而形成符號衝突

如今第三方庫中若是用到的其餘第三方的文件基本都會重命名(避免相同文件名會形成符號衝突),通常不會出現出現符號連接錯誤,個別狀況就是(文件雖然重命名可是裏面的 全局變量並非static 類型)ui

eg:百度導航demo(SDKv3.1.0) 與 MarqueeLabel 出現 符號衝突spa

clipboard.png

把_kMarqueeLabelAnimationCompletionBlock前面的下劃線去掉而後進行全局搜索:blog

clipboard.png

解決方法:ip

在 kMarqueeLabelAnimationCompletionBlock 添加static關鍵字rem

文件相同形成符號衝突

思路:找到衝突的*.O文件所在靜態庫,在庫中刪除便可.
參考連接:http://atnan.com/blog/2012/01...get

修改TARGETS->Build Setting->Other Linker Flags 添加: -force_load 靜態庫在工程中的路徑(這種方法能夠解決上面兩種問題)it

clipboard.png

注意添加的時候先添加libbaiduNaviSDK.a的依賴庫,否則會報錯.io

參考連接:
http://atnan.com/blog/2012/01...
https://www.gitbook.com/book/...class

相關文章
相關標籤/搜索