我正在使用Windows 10和sdl2。必须启动SDL_INIT_GAMECONTROLLER标志或不启动执行。这是main的一些代码(参见gamecontroller init调用的底部注释):
SDL_Init(SDL_INIT_VIDEO);
int imgFlags = IMG_INIT_PNG;
if(!( IMG_Init(imgFlags) & imgFlags)) {
printf( "SDL_image could not initialize! SDL_image Error: %s\n", IMG_GetError() );
return 0;
}
SDL_ShowCursor(SDL_DISABLE);
SDL_Window* window = NULL;
window = SDL_CreateWindow("Anica", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, W, H,
SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = NULL;
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_InitSubSystem(SDL_INIT_AUDIO);
SDL_InitSubSystem(SDL_INIT_EVENTS);
SDL_InitSubSystem(SDL_INIT_TIMER);
// If this sub system is not initted execution stops. If it is initted
// execution works fine. It takes 2-3 seconds for this call to finish which
// is really slow.
SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER);
如果游戏控制器子系统已启动,则窗口打开并挂起,直到完成游戏控制器初始化调用(2-3秒)。一切正常。如果未启动游戏控制器子系统,则窗口将打开并无限期挂起。
我正在使用Windows 10,如果这有任何区别。
我的合作伙伴在Windows 10上使用相同的代码没有这个问题,这让我们俩都感到困惑。
从SDL 2.0.9到2.0.8为我解决了这个问题。
感谢有关帮助问题的评论。