【vscode】 配置 SDL2


前言

vscode 中 使用 cmake 配置 sdl2 开发环境。


1. 下载 SDL

https://www.libsdl.org/release/SDL2-devel-2.0.22-mingw.zip

解压复制 x86_64-w64-mingw32 中 bin 和 include 两个目录到项目中。

2. 配置 cmake

导入头文件路径:

target_include_directories(main
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}
        ${CMAKE_CURRENT_LIST_DIR}/SDL2/include/SDL2
)

导入动态库:

target_link_libraries(main
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}/SDL2/bin/SDL2.dll
)

代码如下:

add_executable(main "")

target_sources(main
    PRIVATE
        ${CMAKE_CURRENT_LIST_DIR}/main.c
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}/main.h
)

target_include_directories(main
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}
        ${CMAKE_CURRENT_LIST_DIR}/SDL2/include/SDL2
)

target_link_libraries(main
    PUBLIC
        ${CMAKE_CURRENT_LIST_DIR}/SDL2/bin/SDL2.dll
)

3. 实现代码

代码如下:

#include "SDL.h"

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int WinMain(int argc, char *argv[])
{
    //将要渲染的窗口
    SDL_Window *window = NULL;

    //窗口含有的surface
    SDL_Surface *screenSurface = NULL;

    //初始化SDL
    if (SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    }
    else
    {
        //创建 window
        window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
        if (window == NULL)
        {
            printf("Window could not be created! SDL_Error: %s\n", SDL_GetError());
        }
        else
        {
            //获取 window surface
            screenSurface = SDL_GetWindowSurface(window);

            //用白色填充surface
            SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));

            //更新surface
            SDL_UpdateWindowSurface(window);

            //延迟两秒
            SDL_Delay(2000);
        }
    }
    //销毁 window
    SDL_DestroyWindow(window);

    //退出 SDL subsystems
    SDL_Quit();

    return 0;
}

注意此处使用 WinMain 作为入口函数,如果使用 main,则需要添加 #undef main,如下:

#undef main
int main(int argc, char *argv[])
{...}

总结

程序运行时需要动态调用 SDL.dll,需要将 SDL.dll 文件复制到程序所在位置,或者将 SDL.dll 复制到 “C:\Windows\System32” 这个目录下一劳永逸。

如果出现报错 undefined reference to `WinMain’,需要按照 “3. 代码实现” 部分完成入口函数的修改。

交流

项目仓库:https://github.com/dissor/c-libnes/tree/main/examples
微信公众号:物联指北
B站:物联指北
千人企鹅群:658685162

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在VS Code中配置SDL,您需要按照以下步骤操作: 1. 安装MinGW:首先,您需要安装MinGW来编译C/C++代码。您可以从MinGW的官方网站下载安装程序,并按照提示进行安装。 2. 安装SDL2库:您可以从SDL2的官方网站下载SDL2开发库。解压缩下载的文件,并将SDL2文件夹放在您喜欢的位置。 3. 配置环境变量:在系统环境变量中添加MinGW和SDL2的路径。找到MinGW的安装路径,并将其添加到系统的Path变量中。同样,找到SDL2库的路径,并将其添加到系统的Path变量中。 4. 创建VS Code项目:在您的项目文件夹中创建一个新的文件夹,并使用VS Code打开它。 5. 创建C/C++配置文件:在您的项目文件夹中创建一个名为`.vscode`的文件夹,并在该文件夹中创建一个名为`c_cpp_properties.json`的文件。 6. 配置C/C++属性:打开`c_cpp_properties.json`文件,并添加以下内容: ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/SDL2/include" // 替换为您的SDL2头文件路径 ], "defines": [], "compilerPath": "C:/MinGW/bin/gcc.exe", // 替换为您的MinGW编译器路径 "cStandard": "c11", "cppStandard": "gnu++14", "intelliSenseMode": "gcc-x64" } ], "version": 4 } ``` 请确保替换路径为您在步骤2和步骤3中安装和配置的实际路径。 7. 创建任务配置文件:在`.vscode`文件夹中创建一个名为`tasks.json`的文件。 8. 配置任务属性:打开`tasks.json`文件,并添加以下内容: ```json { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "build", "command": "gcc", "args": ["-g", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe", "${file}"], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] } ] } ``` 9. 编译和运行:现在,您可以在VS Code中编写和保存您的SDL代码文件,并使用快捷键`Ctrl+Shift+B`来编译和运行您的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值