27

これが私の現在のMakefileの一部です:

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

libsdlを正しくインストールしました。SDL.hはそれが属する/usr/ include / sdlにありますが、コンパイルされません。.hファイルにもその行があり#include "SDL.h"ますが、それでもうまくいきません。

誰もが理由を知っていますか?

4

6 に答える 6

47

Simple Direct Media Layer 2 (SDL2) の場合、次の方法で Ubuntu 16.04 にインストールした後:

sudo apt-get install libsdl2-dev

私はヘッダーを使用しました:

#include <SDL2/SDL.h>  

およびコンパイラ リンカー コマンド:

-lSDL2main -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
于 2016-12-02T21:12:10.497 に答える
27

ヘッダー ファイルが/usr/include/sdl/SDL.hあり、コードが次の場合:

#include "SDL.h"

コードを修正する必要があります。

#include "sdl/SDL.h"

または、インクルード ファイルの場所をプリプロセッサに指示します。

CFLAGS = ... -I/usr/include/sdl ...
于 2012-05-07T20:39:33.093 に答える
7

ほとんどの場合、SDLはにあり/usr/include/SDLます。もしそうなら、あなたの#include <SDL.h>ディレクティブは間違っているはずです#include <SDL/SDL.h>

/usr/include/SDLその代わりに、インクルードディレクトリにディレクトリを追加することもできます。-I/usr/include/SDLこれを行うには、コンパイラフラグに追加する必要があります...

IDEを使用している場合、これも非常に簡単です...

于 2012-05-07T20:56:15.210 に答える
1

最も簡単なアイデアは、コードのコンパイル中に pkg-config --cflags --libs sdl2 を追加することです。

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

于 2019-04-28T12:05:11.497 に答える
0

同様のケースがあり、StackAttackのソリューションを使用できませんでした。彼は、私が使用しているレガシー コードが新しすぎる SDL2 を参照しているためです。

幸いなことに、askUbuntuの友人にも似たようなことがありました。

SDLをダウンロード

tar xvf SDL-1.2.tar.gz
cd SDL-1.2
./configure
make
sudo make install
于 2018-12-13T11:20:03.647 に答える