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问题的主要内容,如果未能解决你的问题,请参考以下文章

如何引用dll文件?

VS2012编译的DLL动态库为啥在VS2012上调用正常,在VS2008上使用失败

vs调用note转存文件

vs2010使用main函数

vs2010怎么调用另一个项目的函数?

VS2013每次打开一次后都必须重启