场景:

解决TencentOpenAPI.framework与ZbarSDK中 _base64_encode 函数的冲突

后来在网络上搜寻,删除掉 Other Linker Flag 的 -all_load 就可以解决静态库冲突的问题,

但是这样做的话,会使一些外部的静态库,使用objc扩展函数(catagory)的方法失效。例如BaiduMapApi

如果是有些库使用到了扩展函数(catagory)可以分别对这个库进行加载

使用:-force_load

-force_load BaiduMapApi/libs/Release-iphoneos/libbaidumapapi.a

(BaiduMapApi是添加到当前目录下的)

-force_load $(BUILT_PRODUCTS_DIR)/libxxx.a

(这里是直接添加静态库项目源码的做法)

使用-force_load分别进行加载还是蛮方便的,如果有些函数加入了main函数使用all_load就相当麻烦了。

以上可以解决TencentOpenAPI.framework与ZbarSDK的冲突

如果两个静态库冲突的结构是相同的,可以考虑将两个静态库拆分出来进行合并。

查看文件的架构有哪些
$ lipo -info libzbar.a
Architectures in the fat file: libzbar.a are: armv7 (cputype (12) cpusubtype (11)) i386

将armv7解压出来

lipo libzbar.a -thin armv7 -output libzbar-armv7.a
新建立一个文件夹出来存放解压的(.o)文件
$ mkdir armv7
$ cd armv7
将静态库中的文件解压
$ ar -x ../libzbar-armv7.a

然后将另一个静态库根据以上的步骤做一遍,然后观察连个解压的静态库中,有那些是一样的就合并在一起,不过注意的是两个静态库冲突的(.o)文件必须一致,否则也会出现错误。

合并完后进行打包了
$ libtool -static -o ../libnew-armv7.a *.o

如果像在虚拟机也使用,进行相同的步骤后,将i386的架构合并再一起就可以了。

合并静态库
$ lipo -create -output lib.a libnew-armv76.a libi386.a

iOS解决两个静态库的冲突 duplicate symbol相关推荐

  1. 静态库的冲突 duplicate symbol

    错误log: duplicate symbol _stateBuffer in: /Users/tong/Desktop/gt3-ios-sdk-develop/GT3Example/GT3Exmap ...

  2. iOS开发中解决第三方静态库符号冲突的终极方案

    iOS开发中解决第三方静态库符号冲突的终极方案 背景 在iOS开发的时候,经常会使用各种第三方静态库,这些库内部可能会打包了相同的第三方库.那么在链接的时候就会发生符号冲突. 例如:A厂商提供的lib ...

  3. iOS架构-cocoapods打包静态库(依赖私有库、开源库、私有库又包含静态库)(14)

    前言: iOS工程架构少不了cocoapods 对第三方库的管理,它有着很好的操作性和集中管理的特性.之前的写了不少Xcode 建静态库工程打包.a 和 .framework 的文章,但是我们要先建静 ...

  4. 深入iOS系统底层之静态库介绍

    少长咸集,群贤毕至.--<王羲之・兰亭集序> 目标文件 目标文件结构 程序员编写的是源代码,而计算机运行的则是CPU能识别的机器指令,因此必须要有一系列工具或程序来将源代码转化为机器指令, ...

  5. 解决jQuery和其它库的冲突

    为什么80%的码农都做不了架构师?>>>    在jQuery库中,几乎所有的插件都被限制在它的命名空间里.全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它 ...

  6. oc 协议 回调 静态成员_深入iOS系统底层之静态库

    少长咸集,群贤毕至.--<王羲之・兰亭集序> 目标文件 目标文件结构 程序员编写的是源代码,而计算机运行的则是CPU能识别的机器指令,因此必须要有一系列工具或程序来将源代码转化为机器指令, ...

  7. 解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题

    解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题 最近在做使用openssl链接http和https的项目,编译时出现以下 ...

  8. iOS 使用cocopods打包静态库

    Cocoapods作为OS X和iOS开发平台的类库管理工具,已经非常完善和强大.通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一个用pod管理依赖关系的静态类库给其他人使用,而又不愿意 ...

  9. iOS开发拓展篇—静态库

    一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 比如SDWebImage. ...

最新文章

  1. 实战:使用Mask-RCNN的停车位检测
  2. 创建Swap交换空间
  3. [WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]
  4. PyCharm 2019.1 EAP 5 发布,全新的 Jupyter Notebook
  5. clickhouse 航空数据_趣头条基于Flink+ClickHouse的实时数据分析平台
  6. My first App EncryptWheel is in WAITING FOR REVIEW status
  7. docsify搭建知识库
  8. C++之C/C++内存对齐
  9. java 一次CPU占用过高问题的排查及解决,java基础面试笔试题
  10. Android 8.0系统学习(19)--- SystemUI启动流程
  11. 回文树 / 自动机模板
  12. Oracle数据库学习笔记(一)
  13. 淘宝和网易云怎样知道你喜欢什么?终于有人把推荐系统讲明白了
  14. JavaScript高级程序设计知识点汇总
  15. codeblocks13.12汉化
  16. 马尔可夫链模型--通俗
  17. android webview 设置下载文件,如何使用Android webview下载文本文件
  18. 谈谈死链接产生的原因和处理方法
  19. 朴素贝叶斯凉鞋问题推导
  20. 点击按钮实现页面切换中英文

热门文章

  1. 宏基因组公众号7月精选文章目录
  2. R语言plotly可视化:plotly可视化分组归一化直方图(historgram)并在直方图中添加密度曲线kde、并在直方图的底部部边缘使用geom_rug函数添加边缘轴须图
  3. R语言使用car包的influencePlot函数将回归分析中的离群点(outlier)、杠杆(leverage)和影响(influence)的信息组合成一个高度信息量丰富的合成图
  4. R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
  5. ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_groups‘
  6. Spark运行模式Local+Standalone+Yarn+mesos
  7. mysql数据库21_Mysql5.7.21安装文档
  8. 创建windows窗口并且获得窗口句柄
  9. 函数参数传递常用的三种方式
  10. 人脸检测识别文献代码