Microsoft Visual Studio2019环境下配置SDL开发环境

文章目录

  • Microsoft Visual Studio2019环境下配置SDL开发环境
  • 下载
  • 配置
  • 代码
  • 找不到SDL2.dll
  • 其它问题
  • 参考

Microsoft Visual Studio2019环境下配置SDL开发环境

Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve’s award winning catalog
and many Humble Bundle games.

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL使用GNU宽通用公共许可证为授权方式,意指动态链接(dynamic link)其库并不需要开放本身的源代码。因此诸如《雷神之锤4》等商业游戏也使用SDL来开发。

SDL库的作用说白了就是封装了复杂的视音频底层操作,简化了视音频处理的难度。

下载

下载SDL2-devel-2.24.0-VC.zip版本,或者自己编译。

配置

系统环境变量配置
Microsoft Visual Studio2019环境下配置SDL开发环境_第1张图片

附加包含目录的配置
Microsoft Visual Studio2019环境下配置SDL开发环境_第2张图片

链接器-附加库目录

在这里插入图片描述

代码

通过#pragma comment(lib,"SDL2.lib")引用,项目右键Build,编译成功。

#define SDL_MAIN_HANDLED
//需要加上这句话,否则会出错
//显示 :无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (? invoke_main@@YAHXZ) 中被引用

#include 
#include "SDL.h"

using namespace std;

#pragma comment(lib,"SDL2.lib")

//由于SDL内部重新定义了main,因此main函数需要写成如下形式
int main(int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Window* window;
    SDL_Renderer* renderer;
    window = SDL_CreateWindow(
        "SDL2 Draw Window",                  // window title
        SDL_WINDOWPOS_UNDEFINED,           // initial x position
        SDL_WINDOWPOS_UNDEFINED,           // initial y position
        640,                               // width, in pixels
        480,                               // height, in pixels
        SDL_WINDOW_SHOWN // flags - see below
    );

    if (window == NULL) {
        printf("Could not create window: %s\n", SDL_GetError());
        return 1;
    }
    renderer = SDL_CreateSoftwareRenderer(SDL_GetWindowSurface(window));
    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
    SDL_RenderClear(renderer);
    SDL_SetRenderDrawColor(renderer, 15, 23, 44, 255);
    SDL_RenderDrawPoint(renderer, 10, 10);

    SDL_RenderPresent(renderer);
    SDL_UpdateWindowSurface(window);

    bool quit = false;
    SDL_Event event;
    while (!quit) {
        SDL_WaitEvent(&event);
        switch (event.type) {
        case SDL_QUIT://退出事件
            SDL_Log("quit");
            quit = true;
            break;
        default:
            SDL_Log("event type:%d", event.type);
        }
    }
    //destory renderer
    if (renderer) {
        SDL_DestroyRenderer(renderer);
    }
    // Close and destroy the window
    SDL_DestroyWindow(window);

    // Clean up
    SDL_Quit();
    return 0;

}

找不到SDL2.dll

Microsoft Visual Studio2019环境下配置SDL开发环境_第3张图片
找不到SDL2.dll,把SDL2-devel-2.24.0-VC\SDL2-2.24.0\lib\x64目录下的SDL2.dll拷贝到Debug目录。
Microsoft Visual Studio2019环境下配置SDL开发环境_第4张图片
添加动态库后,重新运行
Microsoft Visual Studio2019环境下配置SDL开发环境_第5张图片

其它问题

  • #define SDL_MAIN_HANDLED 需要加上这句话,否则会出错
    • 显示 :无法解析的外部符号 _main,该符号在函数 “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) 中被引用
  • 由于SDL内部重新定义了main,因此main函数需要写成如下形式 int main(int argc,char* argv[])
    • 添加 #define SDL_MAIN_HANDLED 这个之后,即使main函数为空,也不会报错

参考

  • windows中静态库lib和动态dll的区别及使用方法

  • SDL 库安装、环境配置与使用

  • 《基于 FFmpeg + SDL 的视频播放器的制作》课程的视频_雷霄骅的博客-CSDN博客_雷霄骅ffmpeg视频教程

  • 小学期课程资料 - 基于FFmpeg+SDL的视频播放器的制作.zip_免费高速下载|百度网盘-分享无限制

  • 辅助参考链接

  • VS自动链接到Windows上随vcpkg安装的SDL2库 | 码农俱乐部 - Golang中国 - Go语言中文社区

  • Simple DirectMedia Layer - SDL version 2.0.22 (stable)

  • Microsoft Visual Studio2019环境下搭建FFmpeg开发环境_MY CUP OF TEA的博客-CSDN博客

  • 雷神的sdl文章

  • SDL介绍

  • SDL2源代码分析1:初始化(SDL_Init())

  • SDL2源代码分析2:窗口(SDL_Window)

  • SDL2源代码分析3:渲染器(SDL_Renderer)

  • SDL2源代码分析4:纹理(SDL_Texture)

  • SDL2源代码分析5:更新纹理(SDL_UpdateTexture())

  • SDL2源代码分析6:复制到渲染器(SDL_RenderCopy())

  • 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)

你可能感兴趣的:(#,SDL2,visual,studio)