SDL 1.2.14在windows平台下的编译及例子

来源:互联网 发布:java命令行传参数 编辑:程序博客网 时间:2024/06/04 23:41

背景:

初次接触SDL,大约是当初做毕业设计时。如今再次接触,只换了平台而已,但事是人非,年华似水。曾经的理想,如今只有不停写代码、写代码,似乎除了这事情,别的不知做什么了。

从本文开始,将发布一些在Windows下开发的文章。其实,以我的习惯,不太想称写代码为“开发”,这名词现在还当不起。然而大环境如此,不得不这样做。就像一个人很牛,如果不写几篇文章,不搞几个作品,展示给别人,别人是看不到的。

闲话休提,本文主要涉及SDL在Windows系统中的编译,同时也给出一个简单的例子。

1、下载

SDL的下载地址是http://www.libsdl.org/download-1.2.php,最新版本为1.2.14。上面有源代码以及编译好的运行库。这里只下载源代码,自行编译。

2、解压

解压源代码包后,得到SDL-1.2.14, 该目录有VisualC.zip压缩包以及VisualC.html使用手册。解压VisualC.zip,得到VisualC目录。

3、编译

VisualC目录有SDL.dsw及SDL.sln两个工程文件,前者是VC6.0,后者是VS2005,可以用相应的编译器打开。另外也有SDL和SDLmain及tests三个目录。本文使用VS2003来编译,双击SDL.dsw,提示转换,选择“yes”,可以用Debug或Release方式进行编译,这里选择Release方式,按“Ctrl”+“Shift”+“b”即可编译。

4、库文件

SDL的Release目录生成SDL.dll及SDL.lib,SDLmain的Release目录生成SDLmain.lib,这三个库文件就是我们将要使用的库文件了。另外,有了库文件还需要头文件,我的做法是直接复制SDL-1.2.14目录的include目录到自己的工程中。

 

5、例子

使用第三方库时需要设置一下编译器选项。

1)、头文件及库路径

VS 2003:Tools->Options->左边的Projects->右边的Show directories for: 选Include files,添加对应的头文件目录;选Library files添加对应的库目录

2)、库

VS 2003:Project->工程属性->左边的Linker->Input->Additional Dependencies,输入SDL.lib SDLmain.lib,在Command Line的Additional Options中输入/NODEFAULTLIB:library

3)、共享库

VS 2003:Project->工程属性->左边的Configuration Properties->General->Use of MFC选Use MFC in a Shared DLL

 

至于库及头文件组织,根据各人习惯不同而不同。可以将头文件及库文件直接放到工程当前目录,也可以用放到自定义的目录中。比如,我就将前面得到的库文件放到lib目录,将头文件放到include目录中,再将这两个目录放到SDL目录中,以后凡使用SDL库,直接复制该目录即可。如果不想在VS中设置头文件路径,可以在程序中使用双引号来包含头文件。

 

下面给出一个简单的例子:

#include <SDL.h>

const int WINDOW_WIDTH = 640;
const int WINDOW_HEIGHT = 480;
const char* WINDOW_TITLE = "SDL Start";

int main(int argc, char *argv[])
{
   SDL_Init( SDL_INIT_VIDEO );

   SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0
      SDL_HWSURFACE | SDL_DOUBLEBUF );
   SDL_WM_SetCaption( WINDOW_TITLE, 0 );

   SDL_Event event;
   printf("hello world.");

   bool gameRunning = true;

   while (gameRunning)
   {
      if (SDL_PollEvent(&event))
      {
         if (event.type == SDL_QUIT)
         {
            gameRunning = false;
         }
      } 
   }

   SDL_Quit();

   return 0;
}

如果一切正常的话,运行该例子会弹出一个黑色的窗口,同时还有一个DOS窗口,里面有经典的“hello word”字符串。注意,由于使用动态库SDL.dll,需要将这个库与可执行文件放到同一目录才能正常运行。

原创粉丝点击