首页 > 解决方案 > 无法初始化 SDL2,但 SDL_GetError() 不返回任何内容

问题描述

我只是想启动一个简单的 SDL2 示例。编译是可以的,但是在执行时,在这段代码中:

bool init(){
    if(SDL_Init(SDL_INIT_EVERYTHING) != 0){
        std::cout << "SDL init error: " << SDL_GetError() << std::endl;
        return false;
    }
    return true;
}

SDL init error: 没有从 SDL_GetError() 得到任何输出。你能告诉我,有什么问题吗?

IDE:Eclipse,操作系统:Ubuntu。

更新:

显示的代码段包含一个最小的可重现示例。但是如果你坚持,那么这段代码会给出同样的错误:

int main(){

    if(SDL_Init(SDL_INIT_EVERYTHING) != 0){
        std::cout << "SDL init error: " << SDL_GetError() << std::endl;
        return false;
    }

}

更新 2:

如果我添加更多代码:

int main(){
    if(SDL_Init(SDL_INIT_EVERYTHING) != 0){
        std::cout << "SDL init error: " << SDL_GetError() << " |" << std::endl;
//      return false;
    }
    SDL_Window* window = SDL_CreateWindow("Hello World", 200, 200, 460, 200, SDL_WINDOW_SHOWN);
    if(window == nullptr){
        std::cout << "SDL create window error: " << SDL_GetError() << std::endl;
//      return false;
    }
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if(renderer == nullptr){
        std::cout << "SDL create renderer error: " << SDL_GetError() << std::endl;
//      return false;
    }

如果我向项目添加更多代码,我会得到同样的错误。也就是说,在第一次检查初始化期间。进一步执行没有错误,创建一个窗口和一个渲染器。但是渲染器不能绘制任何东西,窗口总是黑色的并且不执行任何绘制命令:

SDL_SetRenderDrawColor(renderer, 0xFF, 0xAA, 0xFF, 0xFF);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
SDL_Rect actor1 = {10, 10, 550, 50};
SDL_RenderFillRect(renderer, &actor1);

标签: c++linuxsdl-2

解决方案


推荐阅读