webentwicklung-frage-antwort-db.com.de

'"SDL.h" Keine solche Datei oder Verzeichnis gefunden "beim Kompilieren

Hier ist ein Stück meines aktuellen Makefiles:

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

Ich habe libsdl richtig installiert, SDL.h ist in/usr/include/sdl, wo es hingehört, aber es wird einfach nicht kompiliert. Ich habe auch die Zeile #include "SDL.h" in meinen .h-Dateien, aber immer noch nicht.

Weiß jemand warum?

15
argoneus

Wenn die Header-Datei /usr/include/sdl/SDL.h ist und Ihr Code Folgendes hat:

#include "SDL.h"

Sie müssen entweder Ihren Code korrigieren:

#include "sdl/SDL.h"

Oder teilen Sie dem Präprozessor mit, wo Sie Include-Dateien finden können:

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

Für Simple Direct Media Layer 2 (SDL2) nach der Installation auf Ubuntu 16.04 über: 

Sudo apt-get install libsdl2-dev

Ich habe den Header verwendet: 

#include <SDL2/SDL.h>  

und den Compiler-Linker-Befehl: 

-lSDL2main -lSDL2 

Zusätzlich möchten Sie möglicherweise auch Folgendes installieren: 

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

Mit diesen Headern: 

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

und die Compiler-Linker-Befehle: 

-lSDL2_image 
-lSDL2_ttf 
-lSDL2_mixer
13
StackAttack

Meistens ist SDL in /usr/include/SDL. Wenn ja, dann ist Ihre #include <SDL.h>-Direktive falsch, es sollte #include <SDL/SDL.h> sein.

Eine Alternative dazu ist das Hinzufügen des Verzeichnisses /usr/include/SDL zu Ihren Include-Verzeichnissen. Dazu müssen Sie den Compiler-Flags -I/usr/include/SDL hinzufügen ...

Wenn Sie eine IDE verwenden, sollte dies auch ganz einfach sein ...

6
bardes

Die Headerdatei lebt um

/usr/include/SDL/SDL.h

ziehen Sie in Ihrem C++ - Code diesen Header mit

#include <SDL.h>

sie haben die korrekte Verwendung von

`sdl-config --cflags --libs` 

das wird dir geben 

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

zu einem späteren Zeitpunkt können Sie auch diese Verwendung sehen, die für eine Standardinstallation geeignet ist

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

was versorgt dich mit

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

die einfachste Idee ist, pkg-config --cflags --libs sdl2 hinzuzufügen, während der Code kompiliert wird.

g++ file.cpp `pkg-config --cflags --libs sdl2`

0
Mayank Sharma

Ich hatte einen ähnlichen Fall und konnte die Lösung von StackAttack nicht verwenden, da er sich auf SDL2 bezieht, was für den alten Code, den ich zu neu verwende, ist.

Zum Glück hatten unsere Freunde von askUbuntu etwas Ähnliches:

SDL herunterladen

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