C++ '&引用;SDL.h“;未找到此类文件或目录';编译时

C++ '&引用;SDL.h“;未找到此类文件或目录';编译时,c++,linux,sdl,C++,Linux,Sdl,下面是我当前生成文件的一部分: CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer 我已经正确安装了libsdl,SDL.h位于它所属的/usr/include/SDL中,但它无法编译。我在我的.h文件中还有一行#include“SDL.h”,但仍然没有 有人知道原因吗?如果头文件是/usr/include/sdl/sdl.h,并且您的代码有: #include "SDL.h"

下面是我当前生成文件的一部分:

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer
我已经正确安装了libsdl,SDL.h位于它所属的/usr/include/SDL中,但它无法编译。我在我的.h文件中还有一行
#include“SDL.h”
,但仍然没有


有人知道原因吗?

如果头文件是
/usr/include/sdl/sdl.h
,并且您的代码有:

#include "SDL.h"
您需要修复代码:

#include "sdl/SDL.h"
或者告诉预处理器在何处查找包含文件:

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

大多数时候SDL都在
/usr/include/SDL
中。如果是这样,那么您的
#include
指令是错误的,它应该是
#include

另一种方法是将
/usr/include/SDL
目录添加到include目录中。为此,您应该将
-I/usr/include/SDL
添加到编译器标志中

如果您使用的是IDE,这应该也很容易…

头文件位于

/usr/include/SDL/SDL.h

       __OR__

/usr/include/SDL2/SDL.h  #  for SDL2
<>在C++代码中使用

拉入这个标头
#include <SDL.h>

       __OR__

#include <SDL2/SDL.h>    // for SDL2
这会给你

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

       __OR__

-I/usr/include/SDL2 -D_REENTRANT
-lSDL2
有时,您也可能会看到这种用法适用于标准安装

pkg-config --cflags --libs sdl

       __OR__

pkg-config --cflags --libs sdl2   #  sdl2
它为你提供了

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

       __OR__

-D_REENTRANT -I/usr/include/SDL2 -lSDL2   #  SDL2
对于(SDL2),在Ubuntu 16.04上安装后,通过:

sudo apt-get install libsdl2-dev
我使用了标题:

#include <SDL2/SDL.h>  
此外,您可能还希望安装:

apt-get install libsdl2-image-dev  
apt-get install libsdl2-mixer-dev  
apt-get install libsdl2-ttf-dev  
使用以下标题:

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

有一个类似的例子,我不能使用他的解决方案,因为他指的是SDL2,这是我使用的旧代码太新了

幸运的是,我们来自美国的朋友也有类似的经历:


最简单的想法是在编译代码时添加pkg config--cflags--libs sdl2


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

注意:您对他使用的
sdl-config--clfags--libs
的更正对于sdl2来说是错误的。@ShawnicHedgehog I更新为显示sdl和SDL@Onlinux,只需将
#include
更改为
#include
即可修复它,当然在编译时需要
-lSDL2
标志。
apt-get install libsdl2-image-dev  
apt-get install libsdl2-mixer-dev  
apt-get install libsdl2-ttf-dev  
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>  
-lSDL2_image 
-lSDL2_ttf 
-lSDL2_mixer
tar xvf SDL-1.2.tar.gz
cd SDL-1.2
./configure
make
sudo make install