Проблемы настройки SDL2 в Windows / MinGW - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь настроить проект C ++ в CLion, используя SDL2. В настоящее время я скопировал все файлы SDL2 в соответствующие папки в MinGW и скопировал SDL2.dll в каталог сборки, где создается исполняемый файл. Мой файл CmakeLists выглядит так:

cmake_minimum_required(VERSION 3.12)
project(MyProject)

set(CMAKE_CXX_STANDARD 17)

# Add SDL2
find_package(SDL2 REQUIRED)

add_executable(MyProject main.cpp)

target_link_libraries(MyProject SDL2 -lmingw32 -lSDL2main -lSDL2 -mwindows)

И мой main.cpp файл выглядит следующим образом (в значительной степени скопирован из учебника по SDL2):

#include <SDL2/SDL.h>

int main(int argc, char *argv[]) {
    const int SCREEN_WIDTH = 640;
    const int SCREEN_HEIGHT = 480;

    SDL_Window* window = nullptr;
    SDL_Surface* screenSurface = nullptr;

    //Initialize SDL
    if(SDL_Init( SDL_INIT_VIDEO ) < 0) {
        printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    }else { //Create window
        window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );

        if( window == nullptr ) {
            printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
        }
    }

    return 0;
}

Я наконец получил CLion для распознавания SDL2, и он не показывает никаких ошибок в моих исходных файлах, но когда я компилирую, я получаю эту ошибку:

CMakeFiles\MyProject.dir/objects.a(main.cpp.obj): In function `SDL_main':
D:/Documents/Programming Projects/MyProject/main.cpp:14: undefined reference to `SDL_Init'
D:/Documents/Programming Projects/MyProject/main.cpp:15: undefined reference to `SDL_GetError'
D:/Documents/Programming Projects/MyProject/main.cpp:17: undefined reference to `SDL_CreateWindow'
D:/Documents/Programming Projects/MyProject/main.cpp:20: undefined reference to `SDL_GetError'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [MyProject.exe] Error 1

Я следовал многим различным учебным пособиям, начинал с нуля несколько раз, и до сих пор ничего не получалось.

...