在qt中编译ffmpeg时经常会用到LIBS来链接数据库。
LIBS += -L/usr/local/ffmpeg_aarch64/lib -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswesample -lswscale
今天就遇到avcodec_find_decoder为null的问题,除了这个问题外它可能还会造成程序闪退,原因之一就是在编译的时候数据库的链接错误,而且这个错误很低级,但很难看出来,下面两张对比。
你会发现库的版本号不对,但是你会发现链接的同一个库文件,版本却不对。
原因下图所示:
发现问题没,我们编译好ffmpeg的库文件名称都是带后缀的,我们很容易就直接拿来用,而且编译器偏偏又能编译过,因为系统中也可能存在ffmpeg的库文件,它自动链接系统的库文件了,而系统库文件又与我们的库文件版本不一样,这就会造成很多稀奇古怪的问题了,就比较坑了。所以以后凡是库文件,一定要去掉它的后缀,否则链接文件时会找不到它,自动链接到系统的库文件位置了。