vs2010直接调用av_register_all crash问题
Posted leehm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2010直接调用av_register_all crash问题相关的知识,希望对你有一定的参考价值。
需要做一个视频导出的功能,通过ffmpeg来实现,vs2010里面引用ffmpeg库的 dll 和 lib 文件
第一步
av_register_all
就直接crash了, 查了近半天的时间,都快崩溃了,无意中网上看到一个帖子,
The setting is under "Linker | Optimization | References" set to "Keep Unreferenced Data (/OPT:NOREF)" – Adi Shavit Jun 24 ‘13 at 19:10
试了一下,居然好了。。。。。。
由于引用ffmpeg的工程个静态库,所以没有这些选项,因此只得在调用此静态库的dll工程里面设置:
Linker | Optimization | References-----(/OPT:NOREF)
微软关于这个的解释是:
/OPT:REF eliminates functions and/or data that are never referenced 清除从未引用的函数和数据
/OPT:NOREF keeps functions and/or data that are never referenced 保留从未引用的函数和数据。
默认是/opt:REF
https://msdn.microsoft.com/zh-cn/library/bxwfs976.aspx
通俗点就是: 在链接期间,编译器会把一些你从未没有使用过的函数或者数据给优化掉,即最终的程序中不包含此部分函数和数据的执行代码
反过来,就是优化时,编译器不做此类工作。
以上是关于vs2010直接调用av_register_all crash问题的主要内容,如果未能解决你的问题,请参考以下文章