这是我当前的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)
大部分时间SDL都在/usr/include/SDL.如果是这样,那么你的#include <SDL.h>指令是错的,它应该是#include <SDL/SDL.h>.
另一种方法是将/usr/include/SDL目录添加到include目录中.要做到这一点,你应该添加-I/usr/include/SDL到编译器标志...
如果你使用的是IDE,这应该很容易......
头文件位于
/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)