Simple DirectMedia Layerとは幅広い環境で動作するマルチメディアライブラリです。
SDLそのものは必要最小限の機能しか持っていないので、実際に使うときは SDL_image や SDL_mixer といった他のライブラリを組み合わせて使うと便利です。
SDL, SDL_image, SDL_mixerをインストールします。
Visual C++ 2005 Express Editionへのインストール方法を説明します。Visual C++ 2008でも方法は(たぶん)同じです。
まず、SDL本体およびSDL_image,SDL_mixerのDevelopment版をダウンロードします。これら3つのライブラリをマージしたものを用意したので、面倒な人はこれを使ってください。
SDL+SDL_image+SDL_mixer(VC8).zip
ダウンロードして解凍したら、生成されたディレクトリを適当にわかりやすい場所において置いてください。(例:C:\Lib\SDL-1.2.13)
次にVisual C++ 2005 Express Editionの設定をします。
Visual C++を起動し、ツール > オプション から プロジェクトおよびソリューション > VC++ディレクトリ を選択してください。
その画面で「インクルード ファイル」のリストに
(SDLのディレクトリ)\include
例: C:\Lib\SDL-1.2.13\include
を、「ライブラリ ファイル」のリストに
(SDLのディレクトリ)\lib
例: C:\Lib\SDL-1.2.13\lib
をそれぞれ追加して、OKを選んでください。
これでVisual C++の設定は終了です。次にプロジェクトを作ります。
ファイル > 新規 > プロジェクト から 全般 > 空のプロジェクト を選択し、プロジェクト名を入力して、OKを押します。
次にソリューションエクスプローラの「ソースコード」の項目を右クリックして 追加 > 新しい項目 から コード > C++ファイル を選択し、ファイル名に main.c (あるいは main.cpp)を指定してOKを押してください。
次に、プロジェクト > xxxのプロパティ から リンカ > 入力 > 追加の依存ファイルに以下のファイルを追加します。
SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib
更に、リンカ > システム > サブシステム で Windows を選択します。
次にDLLをSDLのlibディレクトリからコピーしてきます。
(SDLのディレクトリ)\lib
の中にある拡張子が.dllのファイルをすべて選択し、さっき作ったmain.cと同じディレクトリ(ふつう マイドキュメント\Visual Studio 2005\Project\(プロジェクト名)\(プロジェクト名) にある)にコピーしてください。
これで設定は終了です。次のコードをmain.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;
}
黒い窓が二秒表示されたら成功です。おめでとうごさいます。
エラーが起きた場合は手順を確認して、それでもだめな場合は周りの人に聞きましょう。
Releaseビルドをしたいときは上記のプロジェクトの設定をReleaseビルド用にやり直してください。
SDL,SDL_mixer,SDL_imageはapt-getとか、Macport(OSX)とかで適当に入れる。 もしくは、ソース拾ってきてコンパイル。
あとは上記のmain.cを作って
gcc main.c -o main `sdl-config --cflags --libs`
SDL_imageを使うときは-lSDL_imageも追加。SDL_mixerもそんな感じで。