C 成功编译后SDL2未运行的问题
我在运行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编译器 这是代
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
,尝试运行它。