[タイトル][SDL][C言語実験室][Kanon専用DNMLビューアKDVXA][BM][ブロック崩し2000][マインスイーパー][ドリラー][ソロモンの鍵アナザー][CDプレイヤJoplay][Depth][Baloon Tripper][SDLバカ一代サポート][掲示板][リンク][日記][自己紹介]

 

SDLとは…

2001/6/20 updated

Simple DirectMedia Layer(SDL)はLoki Entertainment社のプログラマーらによって開発された、マルチメディア用途のAPIです。Loki社の代表作にはLinux版MythやCivilization:Call to Powerなどがあります。彼らは自社製品のためにそれらAPIを使っており、そのレベルの高さが伺えます。

SDLの大きな特徴は

C言語である
対応プラットホームが多い(Windows 9x、Linux、BeOS)

の2点に集約されると思います。 C言語である点は見逃せません。なぜならばたいていのOSにはディフォルトでCがインストールされているからです。Windowsでも、エディタとWindows版gccさえあればゲームプログラムが可能なのです。
対応プラットホームが多いのも特徴です。WindowsからLinuxへ移植する際に、ソースを使いまわせるのは便利です。SDLではこれだけのプラットホームでなく、さらにMacOS、FreeBSD、Solarisなどへの対応もアナウンスしています。

SDL使用手順(ver 1.0.x以降)

SDLをインストールして使ってみたいという人のために…

ダウンロード&インストール

1、以下のサイトからソースをダウンロードします。

http://www.devolution.com/~slouken/SDL/

2、環境変数に次を加えます。以下はシェルにBASHを使っている例です。

.bashrc内で

export LD_LIBRARY_PATH=/usr/local/lib

という行を加えてシェルを起動しなおすか、次のようにタイプします。

%source .bashrc

3、ソースを展開し、そのディレクトリの中に入ります。

%tar zxvf SDL-1.0.x.tar.gz

%cd SDL-1.0.x

4、ルートになります。

%su

5、メイクします。


%./configure

%make;make install

これでインストールされるはずです。

WINDOWSの場合

ここではVC++を使わずにプログラムするためのインストール上の注意を書いておきます。Windowsでコンソール環境をつくるために、まずCygwinをインストールします。リンク先でゲットしてインストールしてください。そして必要なディレクトリを作っていきます。

必要なディレクトリ

/bin … sh.exeをコピーしておいてください。sh.exeはCygwinをインストールしたら有るはずです。

/tmp … 別に作らなくても良いです

/usr/local/cross-tools  … 後でSDLをインストールします

SDLはMingw環境でのコンパイルのみサポートしているためMingwをインストールします。ここで手に入れてください。ファイルをc:\mingw32に展開した場合、CygwinのスタートバッチファイルであるCygnus.batに次の行を追加していきます。

SET PATH=c:\mingw32\bin;%PATH%
SET GCC_EXEC_PREFIX=c:\mingw32\lib\gcc-lib\
SET LIBRARY_PATH=c:\mingw32\lib\gcc-lib\i386-mingw32\egcs-2.90.21;c:\mingw32\i386-mingw32\lib;c:\mingw32\lib;
SET C_INCLUDE_PATH=c:\mingw32\lib\gcc-lib\i386-mingw32\egcs-2.90.21\include;c:\mingw32\i386-mingw32\include;c:\mingw32\include;
SET CPLUS_INCLUDE_PATH=%C_INCLUDE_PATH%;c:\mingw32\include\g++
SET OBJC_INCLUDE_PATH=%C_INCLUDE_PATH%

さて、SDLのページへ飛び、Win32-mingwの開発用ランタイムをダウンロードします。展開し、中に有るi386-mingw32というディレクトリを/usr/local/cross-toolsの中へコピーします。

次にCygwinのスタートバッチファイルであるcygnus.batのPATHに以下の行を追加します。

PATH=/usr/local/cross-tools/i386-mingw32/bin;%PATH%

インストールはこれで終わりです。

テストプログラムがコンパイルできたら成功です。コンパイルする前に、/usr/local/cross-tools/i386-ming32/libの中のSDL.dllをテストプログラムのディレクトリの中に入れておいてください。

☆テストプログラムがうまくコンパイルできない場合

DirectX用のライブラリーが入っていない事が考えられます。SDLのページのDirectXヘッダーのバイナリ―を/usr/local/cross-toolsに入れてください。

WINDOWS、Borland C++の場合(2000/4/21)

Borland社のフリーBCC++でSDLを使うための環境設定例を示します。

まず、ボーランドのHPへ行き、フリーC++コンパイラをゲットします。次にSDLのHPへ飛び、SDLのランタイムとソースをゲットします。

さて、まずC++をインストールします。ボーランドから配布されているcommandlinetools.exeをダブルクリックするとインストールが開始されます。そして、実行ファイルにパスを通します。

>path=%path%;c:\borland\bcc55\bin

MSDOSプロンプトを立ち上げるたびに打つのが面倒な場合、Autoexec.batに記述します。次にSDLのランタイムライブラリであるSDL.dllがあるディレクトリで次のようにタイプします。

>implib -a -c sdl.lib SDL.dll

するとsdl.libが作成されますのでc:\usr\local\sdl\libあたりに移動しておきます。

次にSDLのソースファイルからincludeディレクトリを抜き出し、やはりc:\usr\local\sdlへ移しておきます。これでインストールは完了です。次にプログラム環境を整えます。

まず、コンパイルしたいソースファイルが有るディレクトリにilink32.cfgおよびbcc32.cfgを作ります。実体はコンパイル時のオプションを指定したテキストファイルです。

ilink32.cfgの内容

-Lc:\Borland\Bcc55\lib

bcc32.cfgの内容

-Ic:\Borland\Bcc55\include -Lc:\Borland\Bcc55\lib

次はMakefileです。例を示します。

CC = bcc32
CFLAGS = -O2
LD = ilink32
SDL_LDFLAGS = -aa -Tpe -c -Lc:\usr\local\sdl\lib
SDL_CFLAGS = -tW -DWIN32 -DSDL_Swap16 -DSDL_Swap32 -DWAV_MUSIC -D_BCC32 -Ic:\usr\local\sdl\include
LIBS = sdl.lib import32.lib c0w32.obj cw32.lib
OBJS = test.obj SDL_main.obj
PROGRAM = test.exe
$(PROGRAM): $(OBJS)
.obj.exe:
  @echo "Linking $(PROGRAM) ..."
  $(LD) $(SDL_LDFLAGS) $(LDFLAGS) $(OBJS) $(LIBS)
.c.obj:
  $(CC) $(SDL_CFLAGS) $(CFLAGS) -c $<

test.cをコンパイルするときのメイクファイルです。SDLのソースファイルの中のSDL_main.cをコンパイル時に含めるので、コピーしておきましょう。

解説しておきますとSDL_CFLAGSの中の-D_BCC32は自分用です。その他のコンパイラとは仕様が違う標準関数を使うときに使います。-DSDL_Swap16、-DSDL_Swap32、-DWAV_MUSICはSDL_mixerを使うときに必要です。BCCではこうしなければコンパイルが通りません。

Macの場合(2000/9/19)

MacOS上で、無料でSDLを利用する方法を説明します。CodeWorriorの場合も似たような方法でいけるはずなのでそちらはSDLのReadmeと格闘してください。

Appleが提供するフリーの開発環境MPW(Macintosh Programmer's Workshop)をゲットします。ゲットするのはMPW-GMというイメージファイルですが、20メガバイト程度の大きさなので電話回線の人はちょっと辛いかもしれません。これはDiskCopy形式ですので、DiskCopy6.3.3以降で展開し、デスクトップにでもコピーします。これですでにプログラミングの環境は整っています。

MacOS8.6よりもバージョンが低い場合、AppleGameSprocketが必要です(正確にはDrawSprocketとInputSprocket)。アップルのホームページからダウンロードします。

私の場合、SDKをゲットしたのですが、インストール方法を読むと、インストーラをクリックせよ、と書いてある割には、そのようなものは見つからなかったです。で、その場合は手動でインストールします。InputSprocket.libをシステムフォルダへ向かってドラッグ。これだけでOKです。間違えてシステムフォルダを開いて中へ入れないように。

さて、更になぜかOpenGL.libも必要です。そこで同じようにアップルのホームページからダウンロードします。こちらはインストーラがあるのでそれに従ってください。

次にSDLのホームページからMac版デベロップランタイムをゲットします。それを展開。これで準備はOKです。

MPWフォルダのMPW Shellを立ち上げます。メニューのDirectoryからSet Directoryを選び、SDL-1.1.x/testにセットします。そしてBuildメニューからBuildを選び、ファイル名を入れます。ここではtestspriteとしておきましょう。するとコンパイルされ、実行ファイルが出来あがります。SDL-1.1.x/libにあるlibファイルをtest以下にコピーし、実行しましょう。ぐりぐりスプライトが動きまくれば成功です。

オリジナルプログラムのビルドについては、今のところ調査中です。追って報告します。

続・Macの場合(2000/9/20)

オリジナルプログラムをビルドする場合、まずSDLのディレクトリの下にプロジェクトとなるファイルを置きます。そして、SDLが用意している適当なmakeファイルを修正することでビルドできます。

*.makeファイルは一部アスキー外の文字が入っているのでここでは表示しませんが、変えるところは次の個所なので、参考にmakeファイルを書き換えてください。

OBJS…複数のソースファイルがある場合は一つ一つをスペースで区切ります。
# This is used to build the applicationと書いてある行の一つ下に実行ファイル名を書きます。
そのずっと下にコンパイル指令が書いてあるので同様に書き換えていきます。

参考までにMac用に書き換えたマインスイーパーのmakeファイル(zip圧縮)を示します。

・マインスイーパーのビルド方法

マインスイーパーのソースファイル(tar+gzip圧縮)をダウンロードし、StuffitExpanderなどで展開します。書き換えてあるmakeファイルをマインスイーパーのソースを展開したフォルダへ入れます。そしてそのマインスイーパーのフォルダをSDL-1.1.xフォルダへ放り込みます。

以下、前回と同じようにDirectory→SetDirectoryより、SDL-1.1.x/minedistにディレクトリをセットし、Build→Buildで、実行ファイル名にmineと指定してビルド完了です。

証拠写真↓

 

SDL-1.1.5以降のWindowsの場合(2000/10/25)

Windows/Mingw32下では、SDL-1.1.5以降から利用するライブラリが変わり、それと伴にコンパイル環境もより構築しやすくなりました。ここでは新しいバージョンでコンパイルするまでの道のりを書きます。

まずコンパイラを入手します。
http://www.libsdl.org/Xmingw32/
でNative compiler for Windows,x86とあるところをクリックしてダウンロードします。

そしてそれを解凍し、展開したディレクトリの中にある3つのディレクトリをc:\に書き出します。これでコンパイル環境は既に整っています。プログラムをコンパイルするにはc:\gcc-2.95.2\mingw32.batをダブルクリックします。すると、シェルが立ちあがり、gccなどが使えるようになります。

では、Miss Drillerをコンパイルしてみます。

その前にまず、SDL-1.1.6をダウンロードします。Development RuntimeのWin32:から
SDL-devel-1.1.6-mingw32.tar.gzをダウンロードします。
/homeへダウンロードしたとして、
>cd /home
>tar zxvf SDL-devel-1.1.6-mingw32.tar.gz
と入力しファイルを取り出します。その中のi386-mingw32msvcディレクトリをc:\gcc-2.95.2\へ移して、上書きします。これでSDLプログラムのコンパイルが出来るようになりました。

次にSDL_mixer-1.0.6をダウンロードします。これについては私がクロスコンパイルしたモノを用意したのでこちらを使ってください。これを解凍し、同様にc:\gcc-2.95.2\へ移します。

これで、用意が整いました。drillerのファイルをダウンロードし、展開したディレクトリで
>make
と打てば、drill.exeが出来あがります。シェルから実行する分にはこのままで良いのですが、エクスプロ−ラからダブルクリックで起動したいときには、SDL.dllをdrill.exeがあるディレクトリまでコピーしておいてください。

追記(11/1)

そのままでは動かないようなので、sdl-configを書き換えなければなりません。

/gcc-2.95.2/i386-mingw32msc/bin/sdl-configをテキストエディタで開き、
prefix=/usr/local/cross-tools/i386-mingw32msvc
という行がある場合は、
prefix=/gcc-2.95.2/i386-mingw32msvc
と、書き換えてください。

SDL-1.2.1以降のWindowsの場合(2001/6/20)

SDL-1.2.1からCygwin上でのライブラリのビルドが正式にサポートされました。Cygwinはmingwでプログラムを作成できるため(リンク時-mno-cygwinオプション)、従来のクロスコンパイルされたmingwを使わないでSDLプログラミングが可能となっています。

SDLのコンパイル方法

Linuxと同じです。
まずCygwinをダウンロードし、インストールします。インストールしたディレクトリがCygwinのルートディレクトリになります。ホームディレクトリにSDL-1.2.1.tar.gzをダウンロードして以下の手順でSDLをインストールします。

$ tar zxvf SDL-1.2.1.tar.gz
$ cd SDL-1.2.1
$ ./configure;make;make install

次に/usr/local/libに出来あがったSDL.dllをパスの通っているところへ移します。

$ cp /usr/local/lib/SDL.dll /usr/local/bin

テストディレクトリに入ってサンプルがコンパイルできればOKです。

*注意*

ハマってしまった点についてだけ補足

SDLのプログラムをコンパイルする時にリンクオプション-lmなどをつけると、cygwin.dllが必要となる関係で、プログラムがウンともスンとも言わなくなります。外してコンパイルしてください。

MacOSXの場合(2002/2/27)

SDL-1.2.2あたりから大幅に改善されているMacOSXポートですが、MacOSXでのSDLの使用方法を付記します。

●SDLのインストール方法

Linuxと同じです。ターミナルを開いて、
% ./configure;make
% su
# make install

ただし、MacOSXではデフォルトでrootユーザにスイッチできないので、出来るようにします。アプリケーション→Utilities→NetInfoManagerを立ち上げて、鍵マークをクリックしてアンロックします。次にドメインメニュー→セキュリティ→ルートユーザーを有効をチェックします。ルートユーザのパスワードを設定します。

修正(2002/12/31)

MacOSXでは直接rootにスイッチする行為は推奨されていません。sudoを使ってinstallしてください。

% sudo make install

●オリジナルプログラムのコンパイルの仕方

Linuxと同じ。ただし、コンパイルコマンドはgccでなくcc。

% cc hoge.c `sdl-config --cflags --libs`

以上。特に難しい点はありませんでした。証拠写真↓

 

 

MacOSXの場合その2(2002/2/28)

●実行ファイルを配布したい場合

MacOSXの実行ファイルは、ある形式に従ったディレクトリそのものになっています。ターミナルでコンパイルしたプログラムの名前を「drill」としてこれを配布できる形にするには

1.Drill.appというディレクトリを作ります。
2.Drill.app/Contents、Drill.app/Contents/MacOS、Drill.app/Contents/Resourcesというディレクトリを作ります。
3.drillをDrill.app/Contents/MacOSXにコピーします。
4.Drill.app/Contents/PkgInfoというテキストファイルに説明文を入れておきます。

以上でMacOSXの実行ファイルDrill.appの出来あがりです。

●SDL_mixerをリンクしたい場合

LinuxやWindowsと異なり、通常のフラグに加えてMacOSX専用のフラグを通知しなければリンクは通りません。たとえば、test.cをSDL_mixerつきでコンパイルする場合は、以下のようになります。

% cc -c test.c `sdl-config --cflags`
% cc -o test test.o -lSDL_mixer `sdl-config --libs` -framework QuickTime

注意点としては`sdl-config --libs`よりも前に-lSDL_mixerを書く点です。

以上の手順により作成したMacOSX用Miss Driller。実行にはSDLとSDL_mixerの最新版が必要です。

 

 

 

 

 

ご意見、ご感想、ご要望はこちらまで

Copyright (c) adas,2000.