CLion, SDL2, CMake: нет доступного видеоустройства - PullRequest
1 голос
/ 25 мая 2020

Я пытаюсь начать использовать SDL2 (с CLion в качестве моей IDE), но у меня возникают ошибки. Я использую Pop! _OS 19.10 (на основе ubuntu)

Вот соответствующие файлы проекта:

CMakeLists.txt

cmake_minimum_required(VERSION 3.13)
project(sdlpractice)

set(CMAKE_CXX_STANDARD 20)

find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})

add_executable(sdlpractice main.cpp)
target_link_libraries(sdlpractice ${SDL2_LIBRARIES})

Main. cpp

#include "SDL2/SDL.h"
#include "stdio.h"

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main(int argc, char* args[]) {
    // The window we will be rendering to
    SDL_Window * ptrWindow = NULL;
    // The surface contained by the window
    SDL_Surface * ptrScreenSurface = NULL;
    // Initialize SDL
    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    } else {
        // Create window
        ptrWindow = SDL_CreateWindow("SDL Practice",
                SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
                SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
        if (ptrWindow == nullptr) {
            printf("Window creation failed: %s\n", SDL_GetError());
        }
        // Get window surface
        ptrScreenSurface = SDL_GetWindowSurface(ptrWindow);
        // Fill the surface white
        SDL_FillRect(ptrScreenSurface, NULL, SDL_MapRGB(ptrScreenSurface->format, 0xFF, 0xFF, 0xFF));
        // Update the surface
        SDL_UpdateWindowSurface(ptrWindow);
        // Wait 2 seconds
        SDL_Delay(2000);
        // Destroy window, quit SDL subsystems
        SDL_DestroyWindow(ptrWindow);
        SDL_Quit();
        return 0;
    }
}

Я получаю следующую ошибку:

SDL could not initialize! SDL_Error: No available video device

Я пробовал установить DISPLAY =: 0.0 в конфигурациях запуска CLion. Те же результаты ошибки. Более того, я запустил

echo $DISPLAY 
:1

и попытался использовать: 1, та же ошибка сохраняется.

1 Ответ

0 голосов
/ 28 мая 2020

Удаление /usr/local/bin/sdl2-config, /usr/local/include/SDL2 и /usr/local/lib/libSDL2* (как было предложено Ботье) решило проблему из-за того, что в собственной версии SDL2 отсутствовали требуемые заголовки видео.

...