ffpmeg笔记:(1)编译雷神的ffplay4MFC踩坑记录


参考文章:
1.雷霄骅, ffplay播放器移植VC的工程:ffplay for MFC
2.Dezeming, E1097 未知特性 “no_init_all“
3.略知12, FFmpeg在Windows上的坑
4.码农突围, VS2015 编译问题记录(更新)
5.雷霄骅, ffplay for mfc 代码备忘

1.下载雷神源码

gitee托管地址:https://gitee.com/leixiaohua1020/ffplay-for-MFC
下载后解压到工作目录,直接打开项目。
在这里插入图片描述

1.1 打开项目,重定向项目

我的电脑只有一个Windows SDK版本和一个平台工具集,没得选择。
在这里插入图片描述
生成(编译)项目:
在这里插入图片描述

2.编译过程的坑和解决方法

2.1 ffplaycore.cpp(97): error C2556: “long rint(double)”: 重载函数与“double rint(double)”只是在返回类型上不同

这个错误是因为long rint(doouble) 和 <math.h>的同名函数冲突。使用库函数。
双击错误信息,自动跳转到97行,直接注释掉该函数:
在这里插入图片描述
继续编译,产生下一个错误。

2.2 错误 C3688 文本后缀“PRId64”无效;ffplaycore.cpp 1690

双击错误信息,自动跳转到 ffplaycore.cpp 的1690行,

printf("%7.2f A-V:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB f=%"PRId64"/%"PRId64"   \r",

在PRId64前面加空格:

printf("%7.2f A-V:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB f=%"PRId64"/%"PRId64"   \r",   //错误,没有空格
printf("%7.2f A-V:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB f=%" PRId64"/%" PRId64"   \r",	//正确,加了空格

继续编译,产生下一个错误。

2.3 LINK : fatal error LNK1295: “/OPT:NOREF”与“/LTCG:incremental”规范不兼容

下面图中的优化要保持一致:
在这里插入图片描述
继续编译,产生下一个错误。

2.4 错误 LNK2026 模块对于 SAFESEH 映像是不安全的

这里有110个相同的错误。
在这里插入图片描述
解决方法:
在配置->链接器->命令行 ,进行设置:
/SAFESEH:NO
在这里插入图片描述
再次编译,终于成功。掌声响起。
在这里插入图片描述

3.成功运行exe

在这里插入图片描述

posted @ 2023-03-17 11:49  汉塘阿德  阅读(85)  评论(0编辑  收藏  举报  来源