Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突
#####################################################################################
原文链接:https://zhuanlan.zhihu.com/p/94770774
##############
工程集成5+sdk编译报错duplicate symbol _OBJC_CLASS_$_ZipArchive in:
项目遇到如下问题:解决方案如下:
1:项目是使用mui和原生混合开发的,现需要引入一个第三方库 用原生进行解压文件,但是引入后编译时报错,该如何解决?
2:原生代码如何才能使用到libcoreSupport.a 解压压缩文件的方法?
3:iOS解决两个静态库(.framework或.a)中.o文件冲突
4:SDK/Libs/libcoreSupport.a(ZipArchive.o)
5:集成5+sdk时,编译不过,提示libcoreSupport.a库中引用了ZipArchive框架,而我们自己的工程中的某个framework也引用ZipArchive,就造成编译不过,有没有人遇到,如何解决的?
错误截图
下边是之前搜索进来的解决方案,可惜都只有问题,没有答案
引入第三方库(ZipArchive)报错 - DCloud问答ask.dcloud.net.cn现有工程集成5+sdk编译报错duplicate symbol _OBJC_CLASS_$_ZipArchive in: ../Libs/libcoreSupport.a(ZipArchive.o)ask.dcloud.net.cn
接下来,福利来了,直接上代码了,如下步骤即可
1:进入.a文件的目录
2:查看.a文件信息:
lipo -info libcoreSupport.a,终端会显示该库包含的cpu架构:armv7 x86_64 arm64
3:根据信息依次拆分文件armv7 x86_64 arm64
armv7拆分:->libcoreSupport_armv7.a
lipo -thin armv7 libcoreSupport.a -output libcoreSupport_armv7.a
执行后,就会在文件夹中看到一个libcoreSupport_armv7.a的文件,如下图
x86_64拆分:
lipo -thin x86_64 libcoreSupport.a -output libcoreSupport_x86_64.a
执行后,就会在文件夹中看到一个libcoreSupport_x86_64.a的文件,如下图
arm64拆分:
lipo -thin arm64 libcoreSupport.a -output libcoreSupport_arm64.a
执行后,就会在文件夹中看到一个libcoreSupport_arm64.a的文件,如下图
4:依次删除各个cpu架构需要删除的.o文件
armv7删除
ar -d -sv libcoreSupport_armv7.a ZipArchive.o
x86_64删除
ar -d -sv libcoreSupport_x86_64.a ZipArchive.o
arm64删除
ar -d -sv libcoreSupport_arm64.a ZipArchive.o
5:将第3步骤的拆分的cpu框架重新组成新的静态库
注意:将所有cpu架构的.a库进行合并. 需要先把libcoreSupport.a文件删除掉, 因为合并之后的文件名字也是libcoreSupport.a,这样在项目中直接调用即可
lipo -create -output libcoreSupport.a libcoreSupport_arm64.a libcoreSupport_arm64.a libcoreSupport_armv7.a
执行之后,会发现文件夹中又多了一个libcoreSupport.a文件,删除以下几个文件。
到此,结束!!!
重新编译后运行成功