使用SDL违反访问

Access Violation using SDL

本文关键字:访问 SDL 使用      更新时间:2023-10-16

我有一个小脚本,旨在获取用户的屏幕分辨率并将其分配给变量,但我会收到Access Violation错误,不确定如何修复它(我很新对此语言),希望有人可以向我展示如何写它。

这是我的设置:

//get player's screen info
const SDL_VideoInfo* myScreen = SDL_GetVideoInfo();
//SDL screen
SDL_Surface *screen;
int reso_x = myScreen->current_w; //resolution width (ERROR here)
int reso_y = myScreen->current_h; //resolution height
Uint8  video_bpp = 32;
Uint32 videoflags = SDL_SWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT;// | SDL_FULLSCREEN;
/* Initialize the SDL library */
if ( SDL_Init(videoflags) < 0 ) {
     fprintf(stderr, "Couldn't initialize SDL: %sn",
     SDL_GetError());
     exit(1);
     }
//setup Screen
screen = SDL_SetVideoMode(reso_x, reso_y, video_bpp, videoflags|SDL_FULLSCREEN);

有人知道我错误的原因吗?

您不应该在sdl_init之前拨打任何SDL调用。我的猜测是GetVideoInfo正在返回NULL,因为您当时不处于有效状态。另外,您传递给初始化的标志是错误的,应该是SDL_INIT_VIDEO,而不是您想要的视频。您的视频标志应该转到setVideomode函数。