SDL 1.2.14在windows平台下的编译及例子 | 迟思堂工作室
A-A+

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

2014-08-30 19:43 Windows程序 暂无评论 阅读 2,220 次

背景:

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

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

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

1、下载

SDL的下载地址是,最新版本为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,需要将这个库与可执行文件放到同一目录才能正常运行。



如果本文对阁下有帮助,不妨赞助笔者以输出更多好文章,谢谢!
donate



标签:

给我留言