C++ 使用SDL的访问冲突

C++ 使用SDL的访问冲突,c++,sdl,C++,Sdl,我有一个小脚本,用于获取用户的屏幕分辨率并将其分配给变量,但我得到了一个访问冲突错误,并且不确定如何修复它(我对这种语言非常陌生),因此希望有人能告诉我应该如何编写它 这是我的设置: //get player's screen info const SDL_VideoInfo* myScreen = SDL_GetVideoInfo(); //SDL screen SDL_Surface *screen; int reso_x = myScreen->current_w; //resol

我有一个小脚本,用于获取用户的屏幕分辨率并将其分配给变量,但我得到了一个
访问冲突
错误,并且不确定如何修复它(我对这种语言非常陌生),因此希望有人能告诉我应该如何编写它

这是我的设置:

//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: %s\n",
     SDL_GetError());
     exit(1);
     }

//setup Screen
screen = SDL_SetVideoMode(reso_x, reso_y, video_bpp, videoflags|SDL_FULLSCREEN);
//获取玩家的屏幕信息
const SDL_VideoInfo*myScreen=SDL_GetVideoInfo();
//SDL屏幕
SDL_表面*屏幕;
int reso_x=myScreen->current_w//分辨率宽度(此处错误)
int reso_y=myScreen->current_h//分辨率高度
Uint8视频_bpp=32;
Uint32 videoflags=SDL_SWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT;/|SDL_全屏;
/*初始化SDL库*/
如果(SDL_初始化(视频标志)<0){
fprintf(stderr,“无法初始化SDL:%s\n”,
SDL_GetError());
出口(1);
}
//设置屏幕
屏幕=SDL_设置视频模式(分辨率x、分辨率y、视频bpp、视频标志| SDL_全屏);

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

在SDL\u初始化之前,你不应该打任何SDL电话。我猜GetVideoInfo返回null是因为此时您未处于有效状态。另外,您传递给init的标志是错误的,应该是SDL_init_VIDEO,而不是您想要的视频类型。您的视频标志应该转到SetVideoMode函数。

在SDL_init之前,您不应该进行任何SDL调用。我猜GetVideoInfo返回null是因为此时您未处于有效状态。另外,您传递给init的标志是错误的,应该是SDL_init_VIDEO,而不是您想要的视频类型。您的视频标志应该转到SetVideoMode功能。

ah so SDL_Init(SDL_Init_video)?@Dave有SDL_Init的可接受标志列表。我通常使用SDL_INIT_EVERYTHING,如果我没有使用“EVERYTHING”,我也不会担心。我的OCD for optimized code永远不会允许我在不使用它的情况下初始化所有东西!:Pah so SDL_Init(SDL_Init_视频)?@Dave有SDL_Init可接受的标志列表。我通常使用SDL_INIT_EVERYTHING,如果我没有使用“EVERYTHING”,我也不会担心。我的OCD for optimized code永远不会允许我在不使用它的情况下初始化所有东西!:P