ios 重复引用 静态库_iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题...

转自:http://www.cnblogs.com/rayshen/p/5160218.html

最近在开发项目时编译三方.a时出现了冲突,原因是存在duplicate symbol。

<1>模拟器编译时,应用的即时通讯模块采用的三方库(容联云),和视频监控模块采用的三方库(海康威视)之间有冲突,无法编译通过。

<2>真机编译时,假如对other linker flags设置为-ObjC,海康威视自身的两个.a文件存在冲突,假如不设置,CorePlot框架运行时会出现“selector not recognized”然后应用崩溃。

我真是头都大了啊……

可以看到在针对模拟器架构下(x86_64)的文件会产生如下编译错误:

这种情况一般都是文件里面使用C语言定义的全局变量名或是函数名,在导入的时候因为重复产生了冲突。

解决的方法:

1.对项目buildsetting里的other linker flags进行修改。

(参考下面的博客内容)

2.假如1不行,那只能重新打包三方库了。

(删除SDK内的重复的.o重新打包,详细见:http://blog.csdn.net/djl4104804/article/details/43099061)

other linker flags:

它的设置关乎到项目编译时的链接方式。

根据一篇博客内容顺便补脑下编译过程:

从C代码到可执行文件经历的步骤是:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 > 可执行文件

在最后一步需要把.o

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值