Bugfix系列库和头文件不对应引起的运行异常(典型)

Posted 飞翔的鲲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bugfix系列库和头文件不对应引起的运行异常(典型)相关的知识,希望对你有一定的参考价值。

DATE: 2021.8.20


1、前言

最近在调试一个编码问题时,发现一些奇怪的现象:比如动态码率更新不生效,但同步更新平均码率后就生效了;在测试过程中,也发现了一些奇怪的现象,感觉很不科学,后面才发现问题,排查的过程甚是困难。

2、问题

H.264编码动态码率更新不生效

3、原因分析

库编译使用的头文件与上层调用使用的头文件不一致,两个宏开关不同!====> 头文件和库不对应导致的问题!!!
详细分析:
库中结构体的内存是按照库中头文件中结构体的声明进行分配的,假如上层没有定义frame_num这个变量的内存,但是在底层的库中内存分配中却定义了这个变量,这样就会导致内存错位,传参错位!!!因此就会引起一些奇怪不合理的现象。比如动态码率更新不生效的问题就是参数错位,本来要传参给frame_num的数值却传递给前一个参数,平均码率在结构体内存中是目标码率的下一个,所以参数错位,传递给平均码率的参数实质是传递给了目标码率,所以就生效了。


THE END!

以上是关于Bugfix系列库和头文件不对应引起的运行异常(典型)的主要内容,如果未能解决你的问题,请参考以下文章

包括静态库和头文件Makefile问题(C)

Xcode - 如何将 c 库和头文件包含到可可项目中?

xcode 在哪里保留其库和头文件的默认路径?

ubuntu16.04安装opencl

linux下编译时的默认库和头文件搜索路径

一点一点学写Makefile-增加第三方库和头文件