一、在c++中使用引起的语法错误
1、av_err2str 使用错误
1.1、原因:
跟C++与C语言的编译方式有关系,av_err2str被定义为了一个C语言级别的静态内联函数,有数组空间的定义和开销。C++编译时编译器存在内存方面开销和引用的冲突问题,不能通过
1.2、解决:
找到定义的头文件做以下修改
char av_error[AV_ERROR_MAX_STRING_SIZE] = { 0 };
#define av_err2str(errnum) av_make_error_string(av_error, AV_ERROR_MAX_STRING_SIZE, errnum)
![](https://img-blog.csdnimg.cn/img_convert/1df3fef2364944cc866f2fa0ec690c87.png)
2、av_ts2timestr 使用错误
找到定义的头文件做以下修改
char av_ts_buff[AV_TS_MAX_STRING_SIZE] = { 0 };
#define av_ts2timestr(ts, tb) av_ts_make_time_string(av_ts_buff, ts, tb)
3、av_ts2str 使用错误
找到定义的头文件做以下修改
char av_ts_string[AV_TS_MAX_STRING_SIZE] = { 0 };
#define av_ts2str(ts) av_ts_make_string(av_ts_string, ts)
二、使用SDL_main导致main找不到入口
引用SDL.h就会报这个错误
![](https://img-blog.csdnimg.cn/img_convert/bc9f14ee4ed945c7a509ae97819dedca.png)
因为SDL 将main 宏定义为 SDL_main,所以会找不到main入口
![](https://img-blog.csdnimg.cn/img_convert/6009d54bc1d04be89f6fceacfb146bff.png)
解决办法:
使用#undef main取消这个宏定义
![](https://img-blog.csdnimg.cn/img_convert/c5345f78e21e493a8f8f71bcba22a39b.png)