'"SDL.h"编译时没有找到这样的文件或目录

arg*_*eus 17 c++ linux sdl

这是我当前的Makefile的一部分:

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer
Run Code Online (Sandbox Code Playgroud)

我正确安装了libsdl,SDL.h位于/ usr/include/sdl所属的地方,但它不会编译.#include "SDL.h"我的.h文件中也有这行,但仍然没有.

谁知道为什么?

lar*_*sks 19

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

#include "SDL.h"
Run Code Online (Sandbox Code Playgroud)

您需要修复代码:

#include "sdl/SDL.h"
Run Code Online (Sandbox Code Playgroud)

或者告诉预处理器在哪里找到包含文件:

CFLAGS = ... -I/usr/include/sdl ...
Run Code Online (Sandbox Code Playgroud)


Sta*_*ack 18

对于简单直接媒体第2层(SDL2),在Ubuntu 16.04上安装后通过:

sudo apt-get install libsdl2-dev
Run Code Online (Sandbox Code Playgroud)

我使用了标题:

#include <SDL2/SDL.h>  
Run Code Online (Sandbox Code Playgroud)

和编译器链接器命令:

-lSDL2main -lSDL2 
Run Code Online (Sandbox Code Playgroud)

此外,您可能还想安装:

apt-get install libsdl2-image-dev  
apt-get install libsdl2-mixer-dev  
apt-get install libsdl2-ttf-dev  
Run Code Online (Sandbox Code Playgroud)

使用这些标题:

#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>  
Run Code Online (Sandbox Code Playgroud)

和编译器链接器命令:

-lSDL2_image 
-lSDL2_ttf 
-lSDL2_mixer
Run Code Online (Sandbox Code Playgroud)


bar*_*des 6

大部分时间SDL都在/usr/include/SDL.如果是这样,那么你的#include <SDL.h>指令是错的,它应该是#include <SDL/SDL.h>.

另一种方法是将/usr/include/SDL目录添加到include目录中.要做到这一点,你应该添加-I/usr/include/SDL到编译器标志...

如果你使用的是IDE,这应该很容易......


Sco*_*and 6

头文件位于

/usr/include/SDL/SDL.h

       __OR__

/usr/include/SDL2/SDL.h  #  for SDL2
Run Code Online (Sandbox Code Playgroud)

在您的 C++ 代码中,使用

#include <SDL.h>

       __OR__

#include <SDL2/SDL.h>    // for SDL2
Run Code Online (Sandbox Code Playgroud)

你有正确的用法

sdl-config --cflags --libs

       __OR__

sdl2-config --cflags --libs   #  sdl2
Run Code Online (Sandbox Code Playgroud)

这会给你

-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
Run Code Online (Sandbox Code Playgroud)

有时您可能还会看到这种用法适用于标准安装

pkg-config --cflags --libs sdl

       __OR__

pkg-config --cflags --libs sdl2   #  sdl2
Run Code Online (Sandbox Code Playgroud)

它为您提供

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

       __OR__

-D_REENTRANT -I/usr/include/SDL2 -lSDL2   #  SDL2
Run Code Online (Sandbox Code Playgroud)