制作私有库时要注意做隐藏符号表

前情:
最近小灯塔需要加直播的库来实现直播的功能。 但是小灯塔本身里面已经使用了IJKMediaFramework(里面有ffmpeg)来做视频播放,然后直播功能的sdk,他里面有声网加的ffmpeg。

然后就是小灯塔的IJKMediaFramework内部调到了声网的同名函数,但是实现不一样,挂了。

出现的问题就是小灯塔本身的视频,一播放就闪退。

解决方案:
做私有库的时候对引入的第三方的库要做隐藏符号表处理,基本的处理是

#编译单一库文件,执行预链接,将依赖库集成到输出库中并隐藏符号
'GENERATE_MASTER_OBJECT_FILE'=>'YES',
 
#指定哪些静态库需要预链接进输出库中
#这里针对依赖的库为binary形式的情况,源代码集成的方式还需要研究
'PRELINK_LIBS'=>'"${PODS_ROOT}/ObjectiveLevelDB/ObjectiveLevelDB.framework/ObjectiveLevelDB" "${PODS_ROOT}/leveldb/leveldb.framework/leveldb"'
 
#需要将下面标识设置为NO,否链接则会出现找不到符号的错误。
GCC_SYMBOLS_PRIVATE_EXTERN'=>'NO',

针对这个的例子:


私有库1.png
私有库2.png
私有库3.png

设置好后,重新导出IJKMediaFramework的库放工程里面运行,结果闪退解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容