找不到sdl2.dll

时间:2020-01-11 12:22:14

标签: c++ dll mingw command-prompt sdl-2

我正在尝试使用sdl2,但是当我尝试运行程序时,它给我一个错误提示

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

我从终端进行编译,没有任何IDE(我在Sublime Text中编写代码)。我的命令看起来像这样

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 个答案:

答案 0 :(得分:2)

libSDL2.dll.a是一个 import 库。您可以在编译时使用它来链接代码,以将.dll加载到二进制文件中。您仍然需要在运行时使用SDL2.dll文件,其中包含实际的实现。在Windows上,.dll个文件在PATH中搜索;使用它们的最简单方法是将它们放在包含可执行文件的目录中。

.dll文件可以下载on the SDL website,您似乎只有开发文件。