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


工程集成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,就造成编译不过,有没有人遇到,如何解决的?

Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突_第1张图片
报错截图

下边是之前搜索进来的解决方案,可惜都只有问题,没有答案

现有工程集成5+sdk编译报错duplicate symbol

引入第三方库(ZipArchive)报错


接下来,福利来了,直接上代码了,如下步骤即可

1:进入.a文件的目录


Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突_第2张图片
.a文件的目录

2:查看.a文件信息

lipo -info libcoreSupport.a,终端会显示该库包含的cpu架构:armv7 x86_64 arm64


a文件信息

3:根据信息依次拆分文件armv7 x86_64 arm64

armv7拆分:->libcoreSupport_armv7.a

lipo -thin armv7 libcoreSupport.a -output libcoreSupport_armv7.a,

执行后,就会在文件夹中看到一个libcoreSupport_armv7.a的文件,如下图


Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突_第3张图片
armv7拆分

x86_64拆分:

lipo  -thin x86_64 libcoreSupport.a -output libcoreSupport_x86_64.a

执行后,就会在文件夹中看到一个libcoreSupport_x86_64.a的文件,如下图


Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突_第4张图片
x86_64拆分

arm64拆分:

执行后,就会在文件夹中看到一个libcoreSupport_arm64.a的文件,如下图


Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突_第5张图片
arm64拆分

4:依次删除各个cpu架构需要删除的.o文件



armv7删除

ar -d -sv libcoreSupport_armv7.a ZipArchive.o


armv7删除

x86_64删除

ar -d -sv libcoreSupport_x86_64.a ZipArchive.o


libcoreSupport_x86_64删除

arm64删除

ar -d -sv libcoreSupport_arm64.a ZipArchive.o


arm64删除

5:将第3步骤的拆分的cpu框架重新组成新的静态库

注意:将所有cpu架构的.a库进行合并. 需要先把libcoreSupport.a文件删除掉, 因为合并之后的文件名字也是libcoreSupport.a,这样在项目中直接调用即可


Dcloud~引入第三方库(ZipArchive)报错,.o文件冲突_第6张图片
删除原文件

lipo -create -output  libcoreSupport.a  libcoreSupport_arm64.a  libcoreSupport_arm64.a  libcoreSupport_armv7.a

执行之后,会发现文件夹中又多了一个libcoreSupport.a文件,删除以下几个文件。


要删除这几个文件

到此,结束!!!

重新编译后运行成功


如果喜欢的话,给个赞!

最后:希望能帮到遇到此问题的iOS开发者。欢迎进群咨询:466182270

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