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
再次编译,终于成功。掌声响起。