编译包含 SDL 的 C 代码时如何解决此错误

how do i resolve this error when compiling C code that includes SDL

当我尝试在 windows

中使用 gcc -I/SDL2-2.0.20/x86_64-w64-mingw32/include hsdl.c -L/SDL2-2.0.20/x86_64-w64-mingw32/lib 编译以下 C 代码时
#include "SDL2/SDL.h"
int main( int argc, char* args[] ) {
  SDL_Init( SDL_INIT_EVERYTHING ); //Start SDL
  SDL_Quit(); //Quit SDL
  return 0;
}

我收到以下错误

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\PC\AppData\Local\Temp\ccfFajdG.o:hsdl.c:(.text+0x15): undefined reference to `SDL_Init'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\PC\AppData\Local\Temp\ccfFajdG.o:hsdl.c:(.text+0x1a): undefined reference to `SDL_Quit'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o): in function `main':
C:/_/M/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status

我确实通过将文件移动到库并包含路径来手动安装 SDL headers 和库文件。

您需要告诉 gcc 在哪里可以找到这些包含文件以及在哪里可以找到 SDL2 所需的库。

像这样编译你的程序:

gcc `pkg-config --libs --cflags sdl2` ./hsdl.c -o ./hsdl.exe

如果您尚未在 msys2 上安装 SDL2,请使用此命令:

pacman -S mingw-w64-x86_64-SDL2

如果您尚未在 msys2 上安装 pkg-config,请使用此命令:

pacman -S mingw-w64-x86_64-pkg-config