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