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. phpstorm使用说明

    1.phpstorm软件可以直接断点调试php代码.具体配置方法参考 http://blog.csdn.net/qq4551091/article/details/55258664 就可以了,不过只要 ...

  2. windows网络函数

    The following functions are used in Windows networking: MultinetGetConnectionPerformance WNetAddConn ...

  3. Java学习之DOS基础

    Dos命令行dir:列出当前目录下的文件和文件夹md :创建目录rd :删除目录cd :进入指定目录cd..:退回到上一级目录cd/:退回到根目录del:删除文件exit:退出dos命令行 进入dos ...

  4. shell 检查文件夹是否包含文件,或者只是空文件

    empty_dir_check(){ check_dir=$ if [ -d $check_dir ];then file_list=` -maxdepth -type f` if [ $file_l ...

  5. C++子类父类构造函数的关系

    在C++中子类继承和调用父类的构造函数方法 构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象 ...

  6. 百度编译器ueditor目录创建失败问题解决

    修改ueditor编辑器的文件Uploader.class.php   例如: vim protected/widget/ueditor/php/Uploader.class.php :283 if( ...

  7. 使ie8正常支持placeholder

    在IE8下测试,发现一个问题placeholder不被支持,下面是解决IE支持placeholder的方法,本文引用的jquery是1.12.0测试通过,先引用jquery <script ty ...

  8. locust性能测试框架随笔

    现在有很多的性能测试工具,比如说我们熟悉的loadrunner.jmeter.ab.webbench等等,这些工具如果对一个没用过的朋友来说,学习起来比较不容易,但是如果你能看懂python代码,会写 ...

  9. Java生产环境下性能监控与调优详解

    1:JVM字节码指令与 javapjavap <options> <classes>cd monitor_tuning/target/classes/org/alanhou/m ...

  10. css 给图片添加滤镜效果,透明层毛玻璃效果

    我们用的第一个滤镜是sepia(),他会给图片增加一整降饱和度的橙色染色效果 原图 添加sepia滤镜的效果 img{ width:100%; transition: .5s filter; filt ...