связанные библиотеки SDL2 с GCC

#c #linux #debian #sdl-2

#c #linux #debian #sdl-2

Вопрос:

я пытаюсь создать программу на C, которая включает библиотеки SDL2, но по какой-то неизвестной причине я получаю ошибку во время компиляции с помощью функции sdl, я объясняю сам :

  • Я загрузил все необходимые пакеты SDL2 для разработчиков с помощью этой команды
     apt-get-install  libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev 
    libsdl2-net-dev libsdl2-ttf-dev
     
  • В моем файле c я поместил это вверху :
      #include <SDL2/SDL.h> 
     
  • чтобы скомпилировать мой код с помощью gcc, я связал его с SDL2-config добавлением всех отсутствующих библиотек и т. Д.
    команда, которую я использую :

     gcc   main.c  -o main.o `sdl2-config --cflags --libs` 
     
  • наконец, это код, который я хочу скомпилировать
     int main(int argc, char *argv[])
    {
       SDL_Init(SDL_INIT_VIDEO); 
    
       SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); 
    
       SDL_Quit();
    
       return EXIT_SUCCESS; 
    }
     

это ошибки, которые я получаю

 main.c: In function ‘main’:
main.c:19:5: warning: implicit declaration of function ‘SDL_SetVideoMode’; did you mean ‘SDL_GetVideoDriver’? [-Wimplicit-function-declaration]
   19 |     SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // Ouverture de la fenêtre
      |     ^~~~~~~~~~~~~~~~
      |     SDL_GetVideoDriver
main.c:19:36: error: ‘SDL_HWSURFACE’ undeclared (first use in this function); did you mean ‘SDL_SWSURFACE’?
   19 |     SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // Ouverture de la fenêtre
      |                                    ^~~~~~~~~~~~~
      |                                    SDL_SWSURFACE
main.c:19:36: note: each undeclared identifier is reported only once for each function it appears in
 

кажется, что некоторые библиотеки не были добавлены или отсутствуют, но я думаю, что я добавил их все.

Комментарии:

1. Если вы хотите использовать функции SDL 1.2, например SDL_SetVideoMode() , почему вы установили SDL2? SDL2 переработал API, и эта функция в нем больше не существует.

2. Код, который вы пытаетесь скомпилировать, был написан для древнего SDL1.2, в то время как у нас уже есть SDL2. Если вы следуете руководству, выбросьте его и найдите лучшее.