1、bug产生

  应用第三方静态库之后提示冲突错误:

2、bug分析

  一般会提示哪两个库冲突:

  CameraShowGLView.o是自己创建的类编译生成的;

  libLechangeSDK.a是添加的静态库。

  定位文件后,需要找出冲突的方法或者全局属性,改变自己文件的属性就可以了!

后来发现是CameraShowGLView.m文件中一个枚举搞得,因为这两个都是摄像头相应的文件,说明在libLechangeSDK.a中也有相同的枚举声明!把uniforms加个前缀或者后缀就OK了!以后写静态库一定养成加前缀的习惯!

// Uniform index.
enum {
UNIFORM_VIDEOFRAME,
UNIFORM_INPUTCOLOR,
UNIFORM_THRESHOLD,
NUM_UNIFORMS
};
GLint uniforms[NUM_UNIFORMS];

3、查看.o静态库方法名

  3.1 lipo -info 文件路径:查看静态库的支持信息

lipo -info /Users/xxx/Desktop/libLechangeSDK.a

  3.2 取出arm64架构(冲突报错提示arm64,所以只去取arm64即可)

lipo -thin arm64 /Users/xxx/Desktop/libLechangeSDK.a -output /Users/xxx/Desktop/libLechangeSDK_arm64

  3.3 取出arm64架构中libiosrender-VideoOpenGLES.o文件(根据报错信息提取对应文件)

nm -A /Users/xxx/Desktop/libLechangeSDK_arm64 libiosrender-VideoOpenGLES.o

  结果会发现输出好多内容,我在CameraShowGLView.m文件中的取uniforms方法进行搜索:

  发现还真有,还有其他方法名也有冲突,不过我改了这一个就没事了,感觉是全局变量的缘故!

4、修改冲突地方

  当然只能改自己文件的内容了:(我加了后缀1就ok了)

// Uniform index.
enum {
UNIFORM_VIDEOFRAME,
UNIFORM_INPUTCOLOR,
UNIFORM_THRESHOLD,
NUM_UNIFORMS
};
GLint uniforms[NUM_UNIFORMS];

iOS开发静态库冲突——如何查看静态库(.O)中方法名的更多相关文章

  1. iOS开发——高级篇——换肤、静态库

    一.换肤 1.思路1> 解决方案1,使用颜色作为图片素材的命名关键字 问题1:要保证每套图片的文件名 颜色+ 名称.png的格式比较麻烦 问题2:如果要将某一个图片应用到其他皮肤不方便2> ...

  2. IOS开发中制作属于自己的静态库.a、资源库.bundle、.framework

    一.什么是库        库实际上是一种代码共享的方式,主要用于代码重用和源码隐藏,通常分为动态库和静态库. 静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复 ...

  3. iOS开发:在Swift中调用oc库

    先列举这个工程中用到的oc源码库: MBProgressHUD:半透明提示器,Loading动画等 SDWebImage:图片下载和缓存的库 MJRefresh: 下拉刷新,上拉加载 Alamofir ...

  4. 汇总iOS开发中需要用到的开源库

    来源:http://mobile.51cto.com/hot-431256.htm 1.iOS &iPhone 网络异步加载 asi-http-request [1-1 ASI HTTP 下载 ...

  5. iOS开发中使用静态库 .a 文件

    ​​iOS开发中,在使用一些第三方库时,可能是一个静态库(比如GPUImage).这种情况下,需要编译出静态库文件(.a) ,然后配合响应的头文件(.h 文件)使用. 编译静态库,直接在Xcode中编 ...

  6. iOS开发:在Xcode中用Pods管理第三方库

    之前写了一篇 iOS开发:在Swift中调用oc库 ,今天记录一下如何用Pods的方式来管理第三方库,包括Swift/Object-C的库. 在这之前请先查阅Guides.CocoaPods如何使用的 ...

  7. 李洪强iOS开发之性能优化技巧

    李洪强iOS开发之性能优化技巧 通过静态 Analyze 工具,以及运行时 Profile 工具分析性能瓶颈,并进行性能优化.结合本人在开发中遇到的问题,可以从以下几个方面进行性能优化. 一.view ...

  8. GitHub学习四-查看版本库信息

    首先,只有在本地init以及关联到远程版本库的本地版本库,才能查看版本库信息 1.查看版本库名字 如果忘了名字,直接运行git remote 2.git remote show <name> ...

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

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

随机推荐

  1. daragrid 简单认识

    @{ ViewBag.Title = "EasyUI"; Layout = null; } <script src="~/jquery-easyui-1.5.5.2 ...

  2. 73 QT编程入门

    0 引言 最近开始在QT下编程,记录一下遇到的问题以及解决方法. 1 安装下载及学习资料 (1)安装下载链接 安装链接: https://blog.csdn.net/qq_23473839/artic ...

  3. HDU - 1712 (分组背包模板)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1712 题意:给你n个课程,每个课程有很多种学习方法,用的时间和取得的效果都不一样,现在你只有m天时间用来学 ...

  4. WebKit资源

    WebKit 资料搜集 1 what is webkit? WebKit 是一个开源浏览器网页排版引擎,与之相应的引擎有Gecko(Mozilla,Firefox 等使用的排版引擎)和Trident( ...

  5. input checkbox 禁止选中/修改

    input checkbox 禁止选中 <input type="checkbox"  onclick="return false;" /> inp ...

  6. Java多态的本质

    今天复习了java多态,感觉收获颇多.多态的实现方式有两种,继承父类和实现接口.本质体现在重写上,不同的类重写时体现出不同的特征.编译时和运行时的不同上.编译时只能调用父类的方法,如果调用了子类独有的 ...

  7. new delete

    malloc/free是标准的库函数,而new/delete是操作符 匹配使用原则:malloc(calloc/realloc)和free 以及new/new[] 和delete/delete[]; ...

  8. 关于 CShellManager 的作用

    也许大家看到这个题目,未曾进行windows shell编程的同学呢,会不明白是什么意思,这里简单的介绍一下,windows shell就是可以使编写的程序与系统关联(如快捷方式,托盘图标等),管理系 ...

  9. scala 列表List

    列表: 列表是不可变,也就是说不能通过赋值改变列表的元素: 列表有递归结构,而数据是连续的 List 类型:List() 同样也是List(String) 列表是基于Nil (是空的)和::(列表从前 ...

  10. python全栈开放实践第三版第一章的练习题完成情况

    练习题: 1.简述编译型与解释型语言的区别,且分别列出你知道哪些语言属于编译型,哪些数以解释型.1 编译型:只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可 ...