第一篇文章先讲解如何搭建 window 10 qt creator 环境,用来断点调试 ffplay.c 的代码。
请先阅读之前的文章,搭建好预备环境,因为 ffplay.c 的移植跟 ffmpeg.c 类似,所以直接在 《ffmpeg.c 工程移植》基础上讲解。
假设你已经看完以上3篇文章了。
移植开始:
1,打开Qt creator,点击New File Or Project,选择 Non-Qt Project ,选择 Plain C Application。创建一个 ffplay-qt-yizhi 工程。
2,选择 MinGW 32 bit 编译环境。
3,把 《FFmpeg源码分析-环境搭建篇》编译的C:\msys64\home\loken\ffmpeg\build32
整个目录拷贝到 ffplay-qt-yizhi 项目目录下。
4,下载SDL 的编译文件,我已经编译好了,下载链接:百度网盘,提取码:60fw 。下载完后把文件解压到 ffmpeg-qt-yizhi 项目目录下。
5,回到之前我们在MSYS2编译的ffmpeg源码路径,C:\msys64\home\loken\ffmpeg\ffmpeg-4.2
,把 FFmpeg-4.2
目录下的 4个 文件都拷贝到 ffplay-qt-yizhi 项目目录下。ffplay 比较简单,只有4个文件。
6,因为MSYS2环境里面的 config.h 是程序自动生成的,config.h 有些配置是根据 MSYS2环境定制生成的,所以现在拷贝到window10 qt creator的编译环境,config.h 里面有些配置选项需要手动改下。
#define HAVE_GETPROCESSMEMORYINFO 1 改成 #define HAVE_GETPROCESSMEMORYINFO 0
#define HAVE_PTHREAD_CANCEL 0 改成 #define HAVE_GETPROCESSMEMORYINFO 1
#define HAVE_PTHREADS 0 改成 #define HAVE_PTHREADS 1
#define HAVE_W32THREADS 1 改成 #define HAVE_PTHREADS 0
7,修改 ffplay-qt-yizhi.pro
文件:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
HEADERS += \
cmdutils.h \
config.h
SOURCES += cmdutils.c \
ffplay.c
contains(QT_ARCH, i386) {
message("32-bit")
INCLUDEPATH += $$PWD/build32/ffmepg-4.2/include
INCLUDEPATH += $$PWD/SDL2/include
LIBS += $$PWD/build32/ffmepg-4.2/bin/avformat.lib \
$$PWD/build32/ffmepg-4.2/bin/avcodec.lib \
$$PWD/build32/ffmepg-4.2/bin/avdevice.lib \
$$PWD/build32/ffmepg-4.2/bin/avfilter.lib \
$$PWD/build32/ffmepg-4.2/bin/avutil.lib \
$$PWD/build32/ffmepg-4.2/bin/postproc.lib \
$$PWD/build32/ffmepg-4.2/bin/swresample.lib \
$$PWD/build32/ffmepg-4.2/bin/swscale.lib \
$$PWD/SDL2/lib/x86/SDL2.lib
} else {
message("64-bit")
}
8,运行项目。
9,会提示缺少 DLL,按照之前的教程,把缺的dll都拷贝到 build_xxx/debug 目录。dll都在 ffplay-qt-yizhi 项目里,之前已经拷贝过去了的。
10,拷贝完缺少的DLL后,再次运行项目。
ffplay 源码分析,断点调试环境搭建完毕。
©版权所属:知识星球:弦外之音,QQ:2338195090。
由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。