contents

  1. SDLとは
  2. 導入方法
  3. リンク

SDLの導入

SDL導入法。

SDLとは

Simple DirectMedia Layer。 クロスプラットホームのマルチメディアライブラリです。 Windows, Linux, BeOS, MacOSで動作し、その他のUNIX系OSでも一部使用できます。 ライセンス形態は、LGPLです。

などが使用できます。 OpenGLも併用でき、glutの代わりに使えます。 結局は使うことになるであろうマルチスレッドやタイマがあるので、glutよりも使い勝手がいいでしょう。

導入方法

ライブラリのダウンロード

2002年10月現在、安定版はversion 1.2.5です。 ソースをダウンロードして自分でコンパイルするか、Development Runtimeをダウンロードしましょう。

また、SDLにはたくさんの拡張ライブラリがあります。 以下のものは、その中でもデファクトスタンダードであろうと思われるライブラリです。 こちらも、Development Runtimeを使うのが簡単でしょう。

Visual C++ 6.0

  1. ヘッダファイルとライブラリファイルのパスを通す。
    #include "SDL.h" が推奨されているらしい。 自分は #include <SDL/SDL.h> のほうが好きなのだが……。
  2. 「Win32 Application」のプロジェクトを作成。
  3. 「プロジェクト>設定>C/C++>コード生成」で、リリース時ではマルチスレッド(DLL)、デバック時ではマルチスレッド(DLL, デバッグ)を選ぶ。
  4. 同「リンク>インプット>無視するライブラリ」に、リリース時ではlibc、デバック時ではlibcd,msvcrt.libを追加する。
  5. 同「オブジェクト/ライブラリモジュール」に、SDL.lib SDLmain.libを追加する。この2つ以外は消去してもかまわない(結局SDLライブラリから使用されるが)。
  6. Win32だが、int main(int argc, char* argv[])をエントリポイントだと思ってコーディングする。int main()やvoid main()はだめ。

exeを作るにもかかわらず、dll用の設定にするのがポイントです。 マルチスレッド(DLL)って、べつにDLL用の設定じゃあないですね……。 スタティックリンクライブラリ SDLmain.lib とのからみだと思われます。 ちなみに、mainはSDL_mainに#defineされます。

Visual C++ .NET

  1. ヘッダファイルとライブラリファイルのパスを通す。
  2. 「Win32 プロジェクト>Windows アプリケーション」のプロジェクトを作成。
  3. 「プロジェクトのプロパティ>C/C++>コード生成>ランタイムライブラリ」で、 リリース時ではマルチスレッド DLL (/MD)、 デバック時ではマルチスレッド デバッグ DLL (/MDd)を選ぶ。
  4. 同「リンカ>入力>追加する依存関係」に、SDL.lib SDLmain.libを追加する。
  5. デフォルトのスケルトンコードとリソースを削除。 ただし、#include "stdafx.h" は残しておくこと。 アイコンも残しておいてもいいかも。
  6. int main(int argc, char* argv[])がエントリポイント。
  7. DLLランタイムを使う関係で、msvci70.dllに対する依存関係が生まれる。 これは、VC.NET がインストールされていない環境には含まれていないので、アプリケーションを配布する場合は注意。

1.2.4 以前は、XP+.NET にてデバッグ設定だと動かなかった記憶があるのですが、 1.2.5 では正常に動作しています。

2003/06/30 : hmura さんのSDL compile on Visual C++.NET 2003での記述を反映。

SDL 本家
すべてはここに。
sdldoc-jp
SDL Library Documentationの日本語訳。
SDL Watch @Coming Soon
Zinniaさんによる、SDLの数少ない日本語ニュースサイト。[rent]