web-dev-qa-db-fra.com

"" SDL.h "aucun fichier ou répertoire de ce type n'a été trouvé" lors de la compilation

Voici un extrait de mon Makefile actuel:

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer

J'ai correctement installé libsdl, SDL.h se trouve dans/usr/include/sdl à laquelle il appartient, mais il ne compilera tout simplement pas. J'ai aussi la ligne #include "SDL.h" dans mes fichiers .h, mais toujours pas.

Quelqu'un sait pourquoi?

15
argoneus

Si le fichier d'en-tête est /usr/include/sdl/SDL.h et que votre code a:

#include "SDL.h"

Vous devez soit corriger votre code:

#include "sdl/SDL.h"

Ou indiquez au préprocesseur où trouver les fichiers d'inclusion:

CFLAGS = ... -I/usr/include/sdl ...
15
larsks

Pour Simple Direct Media Layer 2 (SDL2), après l'avoir installé sur Ubuntu 16.04 via: 

Sudo apt-get install libsdl2-dev

J'ai utilisé l'en-tête: 

#include <SDL2/SDL.h>  

et la commande du compilateur: 

-lSDL2main -lSDL2 

De plus, vous voudrez peut-être aussi installer: 

apt-get install libsdl2-image-dev  
apt-get install libsdl2-mixer-dev  
apt-get install libsdl2-ttf-dev  

Avec ces en-têtes: 

#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>  

et les commandes du compilateur: 

-lSDL2_image 
-lSDL2_ttf 
-lSDL2_mixer
13
StackAttack

La plupart du temps, SDL est dans /usr/include/SDL. Si tel est le cas, votre directive #include <SDL.h> est erronée, elle devrait être #include <SDL/SDL.h>.

Une alternative pour cela consiste à ajouter le répertoire /usr/include/SDL à vos répertoires d'inclusion. Pour ce faire, vous devez ajouter -I/usr/include/SDL aux drapeaux du compilateur ...

Si vous utilisez un IDE, cela devrait être assez facile aussi ...

6
bardes

Le fichier d'en-tête vit à

/usr/include/SDL/SDL.h

dans votre code c ++, tirez dans cet en-tête en utilisant

#include <SDL.h>

vous avez l'usage correct de

`sdl-config --cflags --libs` 

qui te donnera 

-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
-L/usr/lib/x86_64-linux-gnu -lSDL

au moment où vous pouvez également voir cette utilisation qui fonctionne pour une installation standard

`pkg-config --cflags --libs sdl`

qui vous fournit

-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL
1
Scott Stensland

Ayant un cas similaire et je ne pouvais pas utiliser StackAttack s solution car il fait référence à SDL2, qui est pour le code hérité que j'utilise trop nouveau.

Heureusement, nos amis de askUbuntu avaient quelque chose de similaire:

Téléchargez SDL

tar xvf SDL-1.2.tar.gz
cd SDL-1.2
./configure
make
Sudo make install
0
Qohelet