您的位置:首页 > 其它

win7, vs2010, ,ffmpeg release 版本崩溃问题

2016-03-22 18:41 633 查看
问题描述:

     win7, Vs2010,
使用ffmpeg api做开发, debug版本运行正常,切换到release时,出现一些内存越界的异常,类似 "0x00905a4d 处未处理的异常: 0xC0000005: 读取位置
0x00905a4d 时发生访问冲突", 

单独写个小的测试, 只调用一个ffmpeg 函数, debug版本运行ok, release版本直接崩溃

测试小程序: 【注,
 头文件和库依赖均配置好】


#include <stdio.h>

extern "C"{

#include "libavutil/time.h"

};

int main(int argc, char *argv[]){

printf("hello world!, 当前时间:%d\n", av_gettime());
return 0;

}

网上解决方法:

修改配置, 链接器->优化->引用, 在release版本下面使用"保留未引用数据(/OPT:NOREF)"选项

分析瞎猜:

来看vs2010中此项的默认配置, release是删除从未使用过的函数或数据, debug此配置项为空, 如果将debug版也置成删除, 也会崩溃

猜测, ffmpeg函数量庞大, vs不够智能,配置引用删除选项后, 会误删有用的函数或数据, 导致程序崩溃
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息