【问题表现】
av_log(NULL, AV_LOG_ERROR, "無法打開%s",av_err2str(ret) );
按以上格式调用av_err2str函数,直接打印错误信息,编译时报错,无法通过编译
【原因】
跟C++与C语言的编译方式有关系,av_err2str被定义为了一个C语言级别的静态内联函数,有数组空间的定义和开销。C++编译时编译器存在内存方面开销和引用的冲突问题,不能通过
【修改】
- 修改为以下,编译通过且使用正常:
- int ret = avio_open();
char errStr[256] = { 0 };
av_strerror(ret, errStr, sizeof(errStr));
printf( “avio_open failed,原因:%s\n”,errStr );