遇到引用库重复定义的问题.duplicate symbol

相信有很多小伙伴在开发的时候,公司和另外一个提供服务的工作合作,然后引入了这个公司的第三方库.然而这个公司开发的静态库里边包含了很多其他第三方的东西.你工程里边还有很多第三方.所以出现 duplicate symbol错误 而且还是500+的重复.看着都脑袋疼.

例如:

出错图(是不是很熟悉)

看着这个图是不是很熟悉.心里就如同一万个草泥马在奔腾.下边是我解决这个问题的方法,走了很多弯路.希望能帮助一些掉入别人设置的陷阱里边的小伙伴.

首先一个一个改重复的熟悉或者删除文件,想也知道会出现多少问题.我直接放弃了这个想法.然后基于不动工程配置的基础上.我只能对这个.a文件做手脚了.


第一步:拆

1.拉出.a文件,查看.a文件支持什么框架并且看看是不是 no fate file文件这样才能继续往下走

控制台里:lipo -info ***.a 

查看支持的框架(armv7,arm64,i386,x86_64)一般都是这几个

2.分解出各个单独框架的.a文件(分解成not fat file 文件方便以后分离.o文件)

lipo ***.a -thin armv7 -output ***_armv7.a (armv7例子)

3.分解出各个.a文件的.o文件(最好单独创建一个文件夹)

ar vx ***_armv7.a

4.根据报错信息,删除各个单独.a文件中冲突的.o文件(举例)

rm    AFURLSessionManager.o

5.合并各个删除.o文件之后的单独框架 生成新的.a文件

ar rcs ***_final_armv7.a *.o

6.其他单独框架重复以上操作生成各种新的.a文件

7.生成新的.a文件

lipo -create ***armv7.a ***arm64.a ***i386.a ***x_86_64.a -output ***new.a

8.覆盖原工程中.a文件

到此结束了  你运行试试  不行的话  还有几个大牛的方法我贴后边可以借鉴一下.


这个 是另外一个思路的解决办法,也许会帮助你.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容