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

问题描述:

     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不够智能,配置引用删除选项后, 会误删有用的函数或数据, 导致程序崩溃
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值