解决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. Java字节码—ASM

    前言 ASM 是什么 官方介绍:ASM is an all purpose Java bytecode manipulation and analysis framework. It can be u ...

  2. ftp服务器可以连接但不能传输数据(proftpd)

    问题:在客户端连接FTP服务器(proftpd)时可以正常连接,但是无法正常传输数据 ftp> ls530 Please login with USER and PASSPassive mode ...

  3. R语言的高质量图形渲染库Cairo(转)

    前言 R语言不仅在统计分析,数据挖掘领域,计算能力强大.在数据可视化上,也不逊于昂贵的商业.当然,背后离不开各种开源软件包的支持,Cairo就是这样一个用于矢量图形处理的类库. Cairo可以创建高质 ...

  4. [认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)

    0 目录 认证授权系列:http://www.cnblogs.com/linianhui/category/929878.html 1 什么是OIDC? 看一下官方的介绍(http://openid. ...

  5. 支付宝支付-常用支付API详解(查询、退款、提现等)

    所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...

  6. 【二】python内置类型

    1.布尔类型 表示真假的类型(true和false) 数字 0.None,以及元素为空的容器类对象都可视作False,反之为 True. In [1]: bool(0) Out[1]: False I ...

  7. Windows 7 蓝屏代码大全 & 蓝屏全攻略

    关于Windows 7.Vista等系统的蓝屏,之前软媒在Win7之家和Vista之家都有很多文章讨论过,但是都是筛选的常见的一些问题,今天这个文章是个大全,希望大家看着别头痛,文章收藏下来以后待查即 ...

  8. [转]tomcat部署

    转载博客原文地址:  http://www.cnblogs.com/xing901022/p/4463896.html 阅读目录 介绍 静态部署——在tomcat启动时部署 动态部署——在tomcat ...

  9. 用java来实现验证码功能(本帖为转载贴),作为个人学习收藏用

    一.关于为何使用验证的解释 在目前的网页的登录.注册中经常会见到各种验证码.其目的便是为了:防止暴力破解  .因为只要CPU性能较强,便可以在慢慢尝试密码的过程中来破解用户账号,因而导致的结果是用户信 ...

  10. javascript的八张图