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

通俗点就是: 在链接期间,编译器会把一些你从未没有使用过的函数或者数据给优化掉,即最终的程序中不包含此部分函数和数据的执行代码

反过来,就是优化时,编译器不做此类工作。

原文地址:https://www.cnblogs.com/leehm/p/9945757.html