前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FFmpeg】SDL 开发环境搭建 ( SDL 简介 | 下载 SDL 开发库 | 拷贝动态库到 C:\Windows\SysWOW64 目录 | 将 SDL 开发库配置到 Qt 项目 )

【FFmpeg】SDL 开发环境搭建 ( SDL 简介 | 下载 SDL 开发库 | 拷贝动态库到 C:\Windows\SysWOW64 目录 | 将 SDL 开发库配置到 Qt 项目 )

作者头像
韩曙亮
发布2024-06-09 13:51:53
1790
发布2024-06-09 13:51:53
举报

一、SDL 简介

1、SDL 简介

SDL , 英文全称 " Simple DirectMedia Layer " , 是 开源 跨平台 多媒体开发库 , SDL 是由 C 语言 开发的 ;

在项目中导入了 SDL 开发库 , 开发者可以使用相同的 C 语言代码 , 开发在多个平台的 多媒体应用软件 , 如 : Linux / Windows / MacOS ;

在 FFmpeg 开发中 , 使用 SDL 来播放 使用 FFmpeg 解码后的 音频数据 , 视频数据 , 图像数据 , 以及 处理 鼠标键盘 的输入事件 ;

2、SDL 相关网站

SDL 相关网站 :

二、SDL 开发环境搭建

1、下载 SDL 开发库

在 Windows 平台的 SDL 开发环境 搭建 , 只需要将 头文件 , dll 和 lib 函数库下载下来直接使用即可 ;

SDL 下载地址 : https://github.com/libsdl-org/SDL/releases/tag/release-2.0.10 , 这里选择 2.0.10 版本的 SDL ;

在本博客的源码中也可以下载 https://download.csdn.net/download/han1202012/89407726 ;

下载 SDL2-devel-2.0.10-VC.zip 选项 , 这是 Windows 平台中 使用 Visual Studio 编译器 的 开发库 ;

SDL2-devel-2.0.10-mingw.tar.gz 对应的是 MinGW 编译器对应的开发库 ;

如果要下载其它版本的 SDL 版本 , 参考 https://github.com/libsdl-org/SDL/releases 下载页面 ;

2、SDL 开发库内容解析

将 SDL2-devel-2.0.10-VC.zip 开发库下载完毕后 , 进行解压 ;

解压后的内容如下 :

  • include 目录下是 SDL 相关的头文件 ;
  • lib 目录下是 动态库 ;
    • 下面的 SDL2.lib 文件 作为动态链接库的导入库 , 该文件中并不包含实际的函数代码 , 只包含了链接到相应 DLL 动态库所需的信息 ; 构建程序时 , 链接器会使用 .lib 文件来解析对 DLL 动态库 函数的引用 , 函数定义在 DLL 中 , 引用定义在 lib 文件中 ;
    • SDL2.dll 是 动态链接库 Dynamic Link Library , 包含了编译后的代码 ;
    • lib 目录下有 32 位 和 64 位 的开发库 , 这里 使用 32 位的开发库 , 因为之前的 FFmpeg 开发环境中使用的开发库也是 32 位的 ;

进入 x86 目录 , 查看 动态库的具体内容 :

3、拷贝动态库到 C:\Windows\SysWOW64 目录

将 SDL2-devel-2.0.10-VC\SDL2-2.0.10\lib\x86</font> 目录下的 SDL2.dll 动态库 拷贝到 C:\Windows\SysWOW64 目录 中 ;

这一步必须操作 , 就像之前拷贝 FFmpeg 的 dll 动态库到 C:\Windows\SysWOW64 目录一样 , 如果不拷贝 , 则在运行程序时报错 ;

4、创建 Qt 项目

进入 Qt Creator , 选择 " 菜单栏 / 文件 / 新建文件或项目 " 选项 ;

在弹出的对话框中 , 选择 非 Qt 工程 " Non-Qt Project " , 下的 " Plain C Application " 类型的应用 , 然后点击右下角的 " Choose " 按钮 ;

设置 项目名称 和 创建路径 , 勾选 " 设为默认的项目路径 " 选项 ;

构建系统 使用 默认的 qmake 即可 ;

构建套件 Kit 都勾选上 ;

版本控制 选择 默认即可 ;

将 " 构建套件 " 设置为 默认的 " MSVC 2015 " 即可 ;

运行效果如下 :

5、将 SDL 开发库配置到 Qt 项目

将 SDL2-devel-2.0.10-VC.zip 开发库 解压后的完整目录 , 拷贝到 Qt 项目中 ;

在 Qt 项目的 构建脚本 SDL_Demo.pro 中 , 配置 拷贝的 SDL 开发库的 头文件 和 动态库 , 配置如下内容 :

代码语言:javascript
复制
win32 {
INCLUDEPATH += $$PWD/SDL2-2.0.10/include
LIBS += $$PWD/SDL2-2.0.10/lib/x86/SDL2.lib
}

完整的配置文件如下 :

代码语言:javascript
复制
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
        main.c

win32 {
INCLUDEPATH += $$PWD/SDL2-2.0.10/include
LIBS += $$PWD/SDL2-2.0.10/lib/x86/SDL2.lib
}

之后 , 在 C 语言项目中 , 导入 SDL.h 头文件 , 就可以进行 SDL 开发了 ;

代码语言:javascript
复制
#include <SDL.h>

完整代码参考 https://download.csdn.net/download/han1202012/89407726 ;

6、SDL 窗口示例

使用如下代码 , 创建一个 SDL 窗口 :

代码语言:javascript
复制
#include <stdio.h>

#include <SDL.h>

#undef main
int main()
{
    printf("Hello World!\n");

    // 创建 SDL 窗口对象
    SDL_Window *window = NULL;

    // 初始化 SDL 环境 , 用于播放视频
    SDL_Init(SDL_INIT_VIDEO);

    // 创建 SDL Window 窗口对象
    window = SDL_CreateWindow("SDL窗口",
                              SDL_WINDOWPOS_UNDEFINED,
                              SDL_WINDOWPOS_UNDEFINED,
                              800,
                              600,
                              SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);

    // 检测 SDL 窗口是否创建成功
    if(!window)
    {
        printf("创建 SDL 窗口失败 错误码 :%s\n", SDL_GetError());
        return 1;
    }

    // 延迟 3 秒
    SDL_Delay(3000);

    // 关闭窗口
    SDL_DestroyWindow(window);

    // 释放系统资源
    SDL_Quit();

    return 0;
}

完整代码参考 https://download.csdn.net/download/han1202012/89407726 ;

运行效果如下 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、SDL 简介
    • 1、SDL 简介
      • 2、SDL 相关网站
      • 二、SDL 开发环境搭建
        • 1、下载 SDL 开发库
          • 2、SDL 开发库内容解析
            • 3、拷贝动态库到 C:\Windows\SysWOW64 目录
              • 4、创建 Qt 项目
                • 5、将 SDL 开发库配置到 Qt 项目
                  • 6、SDL 窗口示例
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档