解决QZ-SDK静态库libRPToolLib.a中avfoundation.o文件和kxMovie依赖的ffmpeg静态库libavdevice.a函数重复定义的问题

在原来项目中导入全志v3相机的SDK静态库libRPToolLib.a,编译通过,但链接报错,具体如下:
 
 

问题描述:

libRPToolLib.a和libavdevice.a两个第三方库都包含avfoundation.o这个文件,这两个.o中定义了相同的函数名。C语言全局函数,名称不能重复。
 

解决方案:

在i386、x86_64 和 armv7、arm64四个平台下分别解压libRPToolLib.a这个库,分别删除4个平台.a中的avfoundation.o文件,然后再重新合并成新的libTPToolLib.a
 

参考文章:

 
 

具体做法:

1. 建个文件夹lib,把libRPToolLib.a 拷贝到目录下,查看libRPToolLib.a 是否为多架构.a
cd lib
lipo -info libRPToolLib.a

打印:
Architectures in the fat file: libRPToolLib.a are: i386 armv7 x86_64 arm64
结论:
libRPToolLib.a是多框架库,故在lib文件夹下分别建立i386 armv7 x86_64 arm64四个子文件夹,便于数据处理


2. 提取某个框架的.a
lipo libRPToolLib.a  -thin  armv7  -output  armv7/libRPToolLib-armv7.a


3.当前在lib目录,cd到下级目录,并解压缩刚生产的.a

cd armv7 && ar xv libRPToolLib-armv7.a
 
4.找到冲突的包,删除avfoundation.o(可先在finder中找到并选中该avfoundation.o,执行如下命令后,再去finder中查看,该文件的确被删除了)
rm  avfoundation.o

5. cd到上一级,并重新打包刚解压缩目录下所有的.o成为一个新的某个框架下的.lib(armv7平台包)

cd ..  &&  ar  rcs  libRPToolLib-armv7.a   armv7/*.o //将armv7/目录下所有.o打包成 libRPToolLib-armv7.a,存储在lib文件夹下



6. 重复以上步骤,处理i386/x86/armv7/arm64框架的.a

7. 合并为模拟器和真机通用的fat file类型的.a

lipo -create libRPToolLib-armv7.a  libRPToolLib-arm64.a  libRPToolLib-i386.a    libRPToolLib-x86_64.a   -output  libRPToolLib.a

主要的终端指令如下:



lipo libRPToolLib.a  -thin  armv7  -output  armv7/libRPToolLib-armv7.a

cd armv7 && ar xv libRPToolLib-armv7.a

rm  avfoundation.o

cd ..  &&  ar  rcs  libRPToolLib-armv7.a   armv7/*.o



lipo libRPToolLib.a  -thin  arm64  -output  arm64/libRPToolLib-arm64.a

cd arm64 && ar xv libRPToolLib-arm64.a

rm  avfoundation.o

cd ..  &&  ar  rcs  libRPToolLib-arm64.a   arm64/*.o



lipo libRPToolLib.a  -thin  i386  -output  i386/libRPToolLib-i386.a

cd i386 && ar xv libRPToolLib-i386.a

rm  avfoundation.o

cd ..  &&  ar  rcs  libRPToolLib-i386.a   i386/*.o

lipo libRPToolLib.a  -thin  x86_64  -output  x86_64/libRPToolLib-x86_64.a

cd x86_64 && ar xv libRPToolLib-x86_64.a

rm  avfoundation.o

cd ..  &&  ar  rcs  libRPToolLib-x86_64.a   x86_64/*.o



lipo -create libRPToolLib-armv7.a  libRPToolLib-arm64.a  libRPToolLib-i386.a    libRPToolLib-x86_64.a   -output  libRPToolLib.a
 

操作截图:

 
 

 

解决QZ-SDK静态库libRPToolLib.a中avfoundation.o文件和kxMovie依赖的ffmpeg静态库libavdevice.a函数重复定义的问题的更多相关文章

  1. 转载:Windows下stdlib.h与glut.h中exit()函数重复定义的解决方案

    最近用到 OpenGL的第三方库Glut,碰到了exit()这个函数在stdlib.h与glut.h两个头文件中重复定义的情况,解决方案如下: 打开glut.h,找到exit()函数定义的地方(144 ...

  2. node静态资源服务器的搭建----访问本地文件夹(搭建可访问静态文件的服务器)

    我们的目标是实现一个可访问静态文件的服务器,即可以在浏览器访问文件夹和文件,通过点击来查看文件. 1.先创建一个文件夹anydoor,然后在该文件夹里npm init一个package.json文件, ...

  3. c++中的函数重载、函数重写、函数重定义

    目录 一.函数重载 二.函数重写 三.函数重定义 为了更加深刻的理解 函数重载.重写.重定义,我们可以带着如下这两个问题去思考: 1.子类中是否可以定义父类中的同名成员?为什么? 可以,因为子类与父类 ...

  4. python中的PYC文件是什么?

    1. Python是一门解释型语言吗? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言 ...

  5. 解决 “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏;使用“rename”限定符 类型库符号与系统符号冲突问题

    今天在VS工程当中引入一个组件,编译的时候出现警告, “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏:使用“rename”限定符.虽然只是一个警告,但看着实在不爽,更重要的是,警告 ...

  6. Qt5.7中使用MySQL Driver(需要把libmysql.dll文件拷贝到Qt的bin目录中。或者自己编译的时候,链接静态库)

    Qt5.7中使用MySQL Driver 1.使用环境 Qt5.7的安装安装就已经带了MySQL Driver,只需要在安装的时候选择一下即可.如果没有安装,可以采取自己编译的方式.在Qt的源码包的q ...

  7. 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程

    反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑)   背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...

  8. 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包

    前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”) ...

  9. oc工程中oc、swift混编代码打包成静态framework踩坑笔记

    参考资料: https://www.jianshu.com/p/734341f7c242 https://www.jianshu.com/p/55038871e7de   两天时间探索,期间不知道遇到 ...

随机推荐

  1. Html_Task4(知识点:水平居中+垂直居中/position/float/border-radius)

    任务四:定位和居中问题 任务目标 实践HTML/CSS布局方式 深入了解position等CSS属性 任务描述 实现如 示例图(点击打开) 的效果 灰色元素水平垂直居中,有两个四分之一圆位于其左上角和 ...

  2. 【Netty】codec框架

    一.前言 前面已经学习完了Netty框架中的主要组件,接着学习codec框架. 二.codec框架 每个网络应用程序必须定义如何将在对等体之间传输的原始字节解析并转换为目标程序的数据格式,这种转换逻辑 ...

  3. VR全景智慧城市—你的掌上步行街

    "春风十里,不如有你",不知不觉间,身边的人已对VR不再陌生,VR眼镜的热销,VR体验店的火爆,VR游戏的向往等等.可见VR就是为生活而诞生! 2015年被称作VR行业的产业元年, ...

  4. 从矩阵的定义开始谈OpenGL矩阵变换

    前言 最近自己想用C语言写一个Minecraft clone(GitHub链接:http://github.com/CharlesDong/m3c/),因为是现代OpenGL,又是C语言,GLM用不了 ...

  5. hdu4417

    hdu4417 题意 给定一个数列,每次查询一个区间,和一个值h,问区间内有多少个数小于等于h. 分析 二分数的个数,划分树求解判断是否满足条件,划分树求解的是第k小的数,那么前面k个数肯定不大于这个 ...

  6. 论文笔记 Spatial contrasting for deep unsupervised learning

    在我们设计无监督学习模型时,应尽量做到 网络结构与有监督模型兼容 有效利用有监督模型的基本模块,如dropout.relu等 无监督学习的目标是为有监督模型提供初始化的参数,理想情况是"这些 ...

  7. Maven基本安装与配置

    百度Maven,进入Maven官网,点击Download 点击下载Binary zip包,下载到电脑上相应的位置即可. 找到下载文件,进行解压,解压到相应的文件夹下面,并且记住路径. 打开系统-> ...

  8. 关于ASP.NET WebForm与ASP.NET MVC的比较

      WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.Java ...

  9. openjdk8之编译和debug

    系统环境为ubuntu 16.04,uname -a: Linux ddy-Aspire-V5-573G 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:3 ...

  10. Java基础知识总结之IO流

    理解Java的IO流 流(Stream)的概念:程序与数据来源之间的桥梁 流的分类 按流的方向来分(从程序所在的内存的角度来看): 输入流:把外部输入读入当前程序所在内. 输出流:把当前程序所在内存的 ...