前提准备:
- Qt5.15.x 并在安装使要选择MSVC2017/MSVC2019编译器
- virtual Studio 2019 并在扩展中安装Qt插件
- 编译好的ffmpeg库及头文件(如何编译ffmpeg源码)
- SDL库及头文件(SDL源码目录中有VirtualC的目录, 可以直接编译)
准备好后应该是这样的:
ffmpeg动态库(*.pdb是支持调试用的文件): ffmpeg的头文件:
ffmpeg的lib库:
SDL动态库:
SDL头文件: 大概有89个头文件 SDLlib库:
开始创建工程
bin放dll动态库以及调试支持文件 pdb文件 include放头文件 lib放所有lib库 src放工程源码 tools放ffmpeg源码
创建工程
打开vs2019 选择Qt Widgets Application(安装好Qt插件才会出现这个选项) 选择创建到src文件下, 并选择 将解决方案和项目放在同一目录中
选择Qt编译器:(要指定一下qt的MSVC编译器的路径才能选)
直接下一步然后完成创建 生成项目
在解决方案的属性中添加一下 ffmpeg源码: 指定一下输出的exe到bin中,这样才能正常调用到dll动态库 也就是指定到 …/…/bin
指以下头文件的路径: 指定lib库的路径: 依赖库可以在 链接->输入->附加依赖项 手动添加 也可以在代码中用预编译命令添加 这里用预编译添加lib库
测试一下SDL能不能正常使用: 直接在main中测试一下
#include "Qt_SDL_ffmpeg.h"
#include <QtWidgets/QApplication>
#include <SDL2/SDL.h>
#include <iostream>
#undef main
#pragma comment(lib, "SDL2.lib")
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
std::cout << SDL_Init(SDL_INIT_VIDEO) << std::endl;
return a.exec();
}
运行 输出
输出了 0 说明SDL初始化成功了 再测一下ffmpeg的库能否使用:
#include "Qt_SDL_ffmpeg.h"
#include <QtWidgets/QApplication>
#include <SDL2/SDL.h>
#include <iostream>
extern "C"{
#include <libavcodec/avcodec.h>
}
#undef main
#pragma comment(lib, "avcodec.lib")
#pragma comment(lib, "SDL2.lib")
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
std::cout << SDL_Init(SDL_INIT_VIDEO) << std::endl;
std::cout << avcodec_configuration() << std::endl;
return a.exec();
}
打印一下ffmpeg的配置信息 打印成功 断点调试进入ffmpeg源码中: 打好断点开始运行 按F11跳转 这里可以看到进入了我们在tools中准备好的源码 工程创建就完成了
|