本人在开发音视频项目时在发布release版本时遇到ffmpeg库调用崩溃,也是定位了很久。一下是vs工程和qt工程的解决办法:
1.vs的工程属性修改连接器->优化->引用
2.如果是qt工程,IDE是qtcreator的话,就直接在qt工程pro文件中添加QMAKE_LFLAGS += /OPT:NOREF
产生崩溃的本质原因:
之所以会造成release调用ffmpeg库会崩溃,原因就release默认的编译连接是采用优化引用是打开的,这个编译连接优化引用的选项的意思就是将未引用的函数消除,也就是才用了这个选项,有一些未调用的接口并未被编译到工程代码中。这就导致庞大的ffmpeg接口调用异常,实际是用到了,但被优化清除了,就出现的无效的地址访问。