C 成功编译后SDL2未运行的问题

C 成功编译后SDL2未运行的问题,c,mingw,sdl-2,C,Mingw,Sdl 2,我在运行SDL2程序时遇到问题,我使用此命令成功编译了该程序 gcc -g main.c -o main.exe -IC:\\SDL2\\i686-w64-mingw32\\include -LC:\\SDL2\\i686-w64-mingw32\\lib -lmingw32 -lSDL2main -lSDL2 -Wall -Werror 现在我正在尝试运行它,我希望得到一个窗口并在控制台中记录hello,但什么都没有发生,程序立即退出。 我正在使用Windows10和MinGw编译器 这是代

我在运行SDL2程序时遇到问题,我使用此命令成功编译了该程序

gcc -g main.c -o main.exe -IC:\\SDL2\\i686-w64-mingw32\\include -LC:\\SDL2\\i686-w64-mingw32\\lib -lmingw32 -lSDL2main -lSDL2 -Wall -Werror
现在我正在尝试运行它,我希望得到一个窗口并在控制台中记录hello,但什么都没有发生,程序立即退出。 我正在使用Windows10和MinGw编译器

这是代码

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#include <SDL2/SDL.h>

static const int width = 800;
static const int height = 600;

int main(int argc, char **argv)
{
    SDL_Log("hello");

    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window *window = SDL_CreateWindow("Hello, SDL2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_OPENGL);

    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

    SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
    bool running = true;
    SDL_Event event;
    while(running)
    {
        // Process events
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_QUIT)
            {
                running = false;
            }
        }

        // Clear screen
        SDL_RenderClear(renderer);

        SDL_RenderPresent(renderer);
    }

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}
#包括
#包括
#包括
#包括
静态常数int宽度=800;
静态常数int高度=600;
int main(int argc,字符**argv)
{
SDL_日志(“你好”);
SDL_Init(SDL_Init_视频);
SDL_Window*Window=SDL_CreateWindow(“您好,SDL2”,SDL_WINDOWPOS_未定义,SDL_WINDOWPOS_未定义,宽度,高度,SDL_Window_OPENGL);
SDL_Renderer*Renderer=SDL_CreateRenderer(窗口,-1,SDL_Renderer_加速| SDL_Renderer_PRESENTVSYNC);
SDL_SetRenderDrawColor(渲染器,255,0,0,255);
bool running=true;
SDL_事件;
(跑步时)
{
//处理事件
while(SDL_事件和事件))
{
if(event.type==SDL\u QUIT)
{
运行=错误;
}
}
//清屏
SDL_渲染器(渲染器);
SDL_渲染器呈现(渲染器);
}
SDL_渲染器(渲染器);
SDL_窗口(窗口);
SDL_退出();
返回0;
}

请检查SDL函数的返回值,它将帮助您调试并查看问题出在哪里。@TZof,问题甚至是在主函数的开头添加了printf,我无法看到程序的任何输出,这就像它在到达main之前就退出了一样。@yx或者最简单的方法是在调试器(例如gdb)中运行您的程序,打开
SDL_main
并检查接下来会发生什么。您是否从终端运行它?如果是,请在资源管理器中双击
.exe
,尝试运行它。