SDL 2.0.0 はWindows XP, Vista, 7, 8, 10, 11に対応している.
SDLはICC, Visual C++, Cygwin, MinGW, Dev-C++で利用できる.
最新の情報はインストールを参照すること.
SDL 1.2はWindows CEには公式には対応していない. しかし, Windows CEでSDLアプリケーションをビルドし実行することに成功した人達もいる.
SDL 1.2.5以降にはWindows CE用のプロジェクトファイルとSDL 1.2のビルドの情報が含まれている. ソースアーカイブのREADME.WinCEに詳細な情報がある.
SDL 2.0はWindows CEには対応していない.
このオプションであなたのアプリケーションにコンソールサブシステムをリンクすること: `/SUBSYSTEM:CONSOLE`
Win32 APIでコンソールの表示を選択させることもできる:
#include "SDL.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>
static void create_console(void) {
AllocConsole();
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
}
int main(int argc, char *argv[]) {
if (strcmp(argv[1], "--debug") == 0) {
create_console();
}
/* ... ここに秘密のソースを書き込むこと */
return 0;
}
the Dev-C++のチュートリアルを参照すること: http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/tut1 (アーカイブ) 問題が発生したときは, このチュートリアルの作成者に連絡してほしい.
別の段階的な説明もある: http://docs.deninet.com/sdl_on_dev_c.htm (アーカイブ)
pkg-config, またはSDL2 CMakeスクリプトを使用しているならば, 常に`-mwindows`がリンクオプションに加えられる. このオプションはWindowsローダにアプリケーションが`WinMain`から始まることを指示し, コンソールウィンドウを表示しない.
`-mwindows`を取り除く方法はビルドシステムによって異なる:
CMaakeの場合, CMake変数`SDL2_NO_MWINDOWS`を設定すると`find_package(SDL2)`を呼ぶ前に`-mwindows`がリンクオプションから削除される.
pkg-configの場合, 代わりに`$(pkg-config sdl2 --libs-only-L --libs-only-l)`とする.
sdl2-configの場合, `sed`で`-mwindows`を取り除く: `$(sdl2-config --libs | sed -E s/-mwindows//)`
`-mwindows`がない場合, SDL_Init()の前にSDL_SetMainReady()を呼ばなければならない. `SDL2_main`内の`WinMain`シンボルはもう使わないためである.
コンソールウィンドウの生成を選択することもできる. Visual C++の欄を参照すること.
main()が次のように宣言されていることを確認する:
#include "SDL.h"
int main(int argc, char *argv[])
Windowsアプリケーションであるが, WinMain()の代わりにmain()を使わなければならない. なぜならば, SDLはあなたのメインコードを呼ぶ前にSDLの初期化をWinMain()で行っているからである. 何らかの理由でWinMain()を使う必要があるならば, SDLが正しく動作するためにはWinMain()でどのような初期化が必要かをsrc/main/win32/SDL_main.cから見つけること.
以下の様な警告/エラーメッセージの場合もこの方法で回避できる: - found main and WinMain; defaulting to /subsystem:console - found both wmain and main; using latter
Visual C++ではSDL2main.libをリンクする必要がある. Dev-C++を含むgcc環境では, "sdl-config --libs" の出力結果をリンクする必要がある. 通常は次のようである: -lmingw32 -lSDL2main -lSDL2 -mwindows
vcpkgのSDL2main.libはmanual-linkフォルダに移されるので, 手動でリンカに追加する必要がある. 詳細はvcpkgの総合ドキュメントを読むこと.
CMakeを使う場合, add_executableにWIN32を忘れずに追加すること. MinGWを使う場合, -mwindowsをリンクオプションに追加すること. MSVCユーザは/subsystem:windowsを追加すること. clang-clユーザは -Xlinker /subsystem:windows を追加すること.
gccでコンパイルしているならば, コマンドラインのあなたのソースコードの後にsdl2-configの出力があることを確認する: gcc -o test test.c sdl2-config --cflags --libs
SDL2_imageやSDL2_mixerの未定義の関数がある場合は, これらのライブラリが正しくリンクされていることを確認する.