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

前情:
最近小灯塔需要加直播的库来实现直播的功能。 但是小灯塔本身里面已经使用了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的库放工程里面运行,结果闪退解决。

你可能感兴趣的:(制作私有库时要注意做隐藏符号表)