SDL初心者がとりあえずRaspberry Piを使ってやってみる
SDLをコンパイルするときは -lSDL をつけてやる必要がある
最初は動かしやすいやつをやってみる
ラズベリーパイとプロジェクターでなんかしようかなと思っていて Interface5月号を見ているのですが
なんか難しい・・・SDLとかopencvのこととかがよく分からなかったので SDLについて調べてみた
最初は下記のサイトが動かすのに調度良かった 第268回 SDLで夢のオリジナルゲーム開発:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
ちなみに、raspberry pi を使っている場合は startxでxwindowを起動してやる必要があります
しかし、コードが長いのでそもそもC言語すらあんまりわかってないのは厳しかった(^_^;) ので、簡単なところからやってみることに
画面(ウインドウ)を表示する
下記のサイトを参考にしました
サイト内にあるコードを引用すると、画面を出すだけのコードは
-----以下引用
#include <SDL.h> #include <stdio.h> SDL_Surface* screen; int main(int argc, char* argv[]) { /* SDLを初期化する */ if (SDL_Init(SDL_INIT_VIDEO) < 0) { fprintf(stderr, "SDLの初期化に失敗しました:%s\n", SDL_GetError()); return -1; } /* 画面を初期化する */ screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); if (screen == NULL) { fprintf(stderr, "画面の初期化に失敗しました:%s\n", SDL_GetError()); SDL_Quit(); return -1; } /* 2000ミリ秒待つ */ SDL_Delay(2000); /* 終了する */ SDL_Quit(); return 0; }
----引用ここまで
なのですが、僕の場合は
というのがありました。解決策としては
1.コンパイルが通らない件に関して
どうやら SDL.h へのパスが悪かったようです。上記サイトのコードの最初、includeで
#include <SDL.h>
を
#include <SDL/SDL.h>
に変えてみたらコンパイルが通りました。
2. コンパイルが通っても、ウィンドウが起動しない件
これは、SDLの特有なのだと思いますが、通常c言語のファイルをコンパイルする時は
$ gcc test.c -o test
のようにしてあげるのですが、SDLを使う場合は
$ gcc test.c -o test -lSDL
のようにしてあげないといけませんでした(-lはアルファベット小文字のエルです。アイではないので注意)
この辺りが良くわかっていなかったから悩みました(^_^;)
他のライブラリを使うときは、それも指定してあげる
なので、最初のリンクである
第268回 SDLで夢のオリジナルゲーム開発:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
に戻りますが、コンパイルする際に
$ gcc -o sdltest sdltest.c -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer
としています。ここでもまず -lSDL を指定してあげてますが、その他にも
-lSDL_image -lSDL_ttf -lSDL_mixer
の3つを指定してあげています。 これは、記事内にもあるように
SDL_image:各形式の画像ファイル操作機能を提供するライブラリ
SDL_mixer:各形式の音声ファイル操作機能を提供するライブラリ
SDL_ttf:TrueTypeフォントの文字列描画機能を提供するライブラリ
というのを使っているからです。 (そしておそらく外部ファイルとしてインストールしているからです)
とりあえず、画像ファイル操作、音声ファイル操作、フォント描画を行う時は コンパイルの時に指定してあげるのを忘れないようにしないと動かないみたいですね
すこしスッキリしましたのでもうちょっと勉強してみようと思います