引入第三方库(ZipArchive)报错,.o文件冲突

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文件,删除以下几个文件。

到此,结束!!!

重新编译后运行成功

你可能感兴趣的:(引入第三方库(ZipArchive)报错,.o文件冲突)