ホーム   最近   SikiWiki   編集   新規 

[SikiLanguage] [式鬼言語航海日誌] 2007-09-23 その2

2007/09/23_000001




ちょっと寄り道してSDLのインストール中です。手順をメモ書きします。

環境はVisualStudio2005 Standard SP1です

  • Microsoft DirectX ダウンロードからDirectX SDK - August 2007をダウンロードしてインストール
  • ついでなのでMicrosoft DirectX 9.0 Update (October 2004) 日本語ドキュメントもインストール
  • SDLサイトのダウンロードページからSDL version 1.2.12 (stable)をダウンロード。せっかくなのでソースコードからコンパイルします。
  • ダウンロードしたファイルを展開したフォルダにあるVisualC.zipをさらに展開
  • 新しくできたVisualCというフォルダのSDL.slnを実行
  • VCのプロジェクトのプロパティに、DirectX SDKのパスを追加
    • 構成プロパティ - C/C - 全般 - 追加のインクルードディレクトリに C:\Program Files\Microsoft DirectX SDK (August 2007)\Includeを追加
    • 構成プロパティ - リンカ - 全般 - 追加のライブラリディレクトリに C:\Program Files\Microsoft DirectX SDK (August 2007)\Lib\x86を追加
    • 構成プロパティ - ライブラリアン - 全般 - 追加のライブラリディレクトリに C:\Program Files\Microsoft DirectX SDK (August 2007)\Lib\x86を追加
  • なんかランタイムライブラリの設定がおかしいので修正
    • Debug構成のコード生成-ランタイムライブラリをマルチスレッドデバッグDLLに修正
    • 一応、出力ディレクトリ/中間ディレクトリを$(ConfigurationName)に変更
  • ビルド- バッチビルドで一気にコンパイル
  • VisualC/SDLとVisualC/SDLmain以下に成果物ができるので、これを適当なフォルダにコピー
  • 元からあったincludeフォルダも一緒に適当なフォルダにコピー。他のサンプル例も参考に、include/SDLというフォルダ構成になるように修正。

次にプロジェクトを新規に作成しましょう。

  • VC を立ち上げて新規プロジェクトを作成
    • Win32プロジェクトを選択
    • アプリケーションの設定では追加のオプションに空のプロジェクトを選択
  • とりあえずはmain.cppとmain.hppを追加
  • プロジェクト-プロパティの設定
    • C/C
      • 全般 - 追加のインクルードディレクトリに先ほどSDLをインストールしたパスを入力
      • コード生成-ランタイムライブラリを適切なものに修正
        ここでは/MTdと/MDdのどちらかにします。静的リンクにチャレンジしてみましたが上手く行きませんでした。そう簡単では無いようですね。
    • リンカ
      • 全般-追加のライブラリディレクトリに先ほどコンパイルしたライブラリファイルのあるフォルダを指定します。ここもランタイムライブラリに応じて適切なフォルダを選択します。
      • 追加の依存ファイルにSDL.libとSDLmain.libを追加
  • プログラム
    • SDL解説ページのサンプルとかSDL / OpenGL 分科会を参考に簡単なものを作ってみます。

      #include <stdlib.h> #include "SDL/SDL.h" int main(int argc, char *argv[]) { if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); SDL_Surface* screen(SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE)); if(!screen) { fprintf(stderr,"failed to set video mode to 640x480x16.\n"); return -1; } for(;;) { SDL_Event event; while(SDL_PollEvent(&event)) { if(event.type==SDL_QUIT) return 0; Uint8* keys(SDL_GetKeyState(NULL)); if (keys[SDLK_RETURN]==SDL_PRESSED) return 0; } } return 0; }

    • コンパイルを実行。
    • コンパイルしたフォルダにSDL.dllをコピーする
    • 実行

と、これで簡単なサンプルが完成です。

「まあ、表示してリターンで閉じるだけだけどな」





制作・著作: 野分(nowake) at fiercewinds.net (Creative Commons 表示-継承 2.1 日本)