Не удалось найти sdl2.dll - PullRequest
       17

Не удалось найти sdl2.dll

0 голосов
/ 11 января 2020

Я пытаюсь использовать sdl2, но когда я пытаюсь запустить мою программу, она выдает ошибку, которая говорит:

code execution can't proceed because SDL2.dll couldn't be found. try reinstalling [...]

Я компилирую из терминала, без каких-либо IDE (я пишу код в возвышенном тексте). Моя команда выглядит следующим образом

c:\Users\lenerdv\Desktop\cpp\test>g++ src\main.cpp -o ..\..\test.exe -L lib\sdl32\lib -l SDL2 -I lib\sdl32\inc -m32

, а моя файловая система выглядит следующим образом

desktop
   |_ cpp
      |_ test
         |_ src
         |  |_ main.cpp
         |
         |_ lib
            |_ sdl32
               |_ inc
               |  |_ /all the sdl headers
               |
               |_ lib
                  |_ cmake
                  |_ pkgconfig
                  |_ libSDL2.a
                  |_ libSDL2.dll.a
                  |_ libSDL2.la
                  |_ libSDL2_test.a
                  |_ libSDL2_test.la
                  |_ libSDL2main.a
                  |_ libSDL2main.la

Я попытался поместить файл .exe в тот же каталог, что и файлы lib, но это не работает

Я подумал, что проблема может быть в том, что он ищет SDL2.dll файлы, и все они libSDL2.*, и я попытался изменить имена файлов, но это не сработало.

Я также Я думал, что проблема в расширении, потому что они все в *.dll.a, *.a или *.la, я попытался изменить это, и это не сработало (я также попробовал комбинацию двух).

Кстати, это мой main.cpp

#define SDL_MAIN_HANDLED
#include <SDL.h>

int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_EVERYTHING);

    SDL_Window* window = SDL_CreateWindow("Ikari", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 450, SDL_WINDOW_SHOWN);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
    SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);

    SDL_RenderClear(renderer);
    SDL_RenderPresent(renderer);

    SDL_Delay(3000);

    SDL_Quit();
    return 0;
}

Я сейчас серьезно запутался, любая помощь будет признательна.

1 Ответ

2 голосов
/ 11 января 2020

libSDL2.dll.a - это библиотека import . Вы используете его во время компиляции, чтобы связать код для загрузки .dll в ваш двоичный файл. Вам все равно понадобится файл SDL2.dll во время выполнения, который содержит фактическую реализацию. На Windows, .dll файлы ищутся в PATH; Самый простой способ их использования - поместить их в каталог, содержащий исполняемый файл.

Файл .dll доступен для скачивания на веб-сайте SDL , у вас, похоже, есть только файлы разработки.

...