SDL安装

SDL安装

C语言没有图形库,似乎编写C语言的程序就要面对那个黑黑的控制台窗口,这也是很多人对C语言提不起兴趣的原因,但我们可以使用第三方的图形库,比如说open GL,directX,SDL等等,其中SDL比较小巧,并且是开源的,适合入门者学习。有了图形库以后我们就可以编写界面丰富多彩的程序了,你会发现一片新的天地!
    SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。
    SDL图形库包括八个子系统:视频、音频、事件、光驱、文件读写、游戏杆、时间、进程。最经常使用的是前三个,每一个子系统都有专门的安装包:
     SDL安装包:http://www.libsdl.org/release/SDL-devel-1.2.14-VC8.zip

图像子系统安装包:

http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.10-VC.zip

音频子系统安装包:

http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-devel-1.2.11-VC.zip

这三个安装包都包含了这样两个目录:include和lib。其中include目录存放的头文件,就像C语言自带的头文件一样,要使用SDL系统的函 数,必须包含相应的头文件,lib目录下存放的是一些静态库(.lib)和动态库(.dll),这些库里存放的是函数的二进制代码,你在你的程序里包含了 头文件以后,还要加载相应的库,否则编译器找不到相应的函数的代码会报错的,C语言自带的库默认就添加到了你C语言程序里了,不用显示自己管,但SDL不是C语言自带的库,所以必须自己添加这些库。
要添加这些库,有两种方式,第一种是把头文件,库文件放到系统目录下,让编译器能找的到就可以了;第二种,自己建一个目录包含头文件、动态库、静态库,然后在编译器里设置工程属性就可以了。建议使用第二种方式。下面就这两种方式分别说明。

第一种方式,首先将SDL-devel-1.2.14-VC8.zip解压后会有两个目录:

sdl1

然后到VS2005的安装目录下找到一个名叫include的目录,一般vs2005默认的安装目录是c:\Program Files\Microsoft Visual Studio 8\VC或D:\Program Files\Microsoft Visual Studio 8\VC,特别提醒vs必须安装到英文目录名下,否则SDL不能使用,SDL对中文支持不好。vs2008/vs2010也同样。

sdl2

在vc下有一个include目录,在include目录下建立一个新目录,比如说SDL,将解压后的include目录下的文件拷贝到新建的SDL目录下。

D:\Program Files\Microsoft Visual Studio 8\VC

将解压后的lib目录下后缀为lib的文件拷贝到安装目录下一个名叫lib目录下,将后缀为dll的文件拷贝到C:\WINDOWS\system32下。对SDL_image-devel-1.2.10-VC.zip和SDL_mixer-devel-1.2.11-VC.zip做同样的处理。

第二种种方式,首先建立一个目录,假定名字为SDL,在目录下建三个文件夹:include、dll、lib,将下在下来的安装包解压,比如SDL-devel-1.2.14-VC8.zip解压后会有两个目录:

sdl1

将include目录下的头文件拷贝到SDL\include下,将lib目录下的后缀为.lib的文件拷贝到SDL\lib下,将lib下后缀为.dll的文件拷贝到SDL\dll下。对SDL_image-devel-1.2.10-VC.zip和SDL_mixer-devel-1.2.11-VC.zip做同样的处理。

做完这些工作后,我们就可以在VC下建立一个控制台工程,选空工程,然后我们分别就第一种方式和第二种方式设置工程的属性。

 

新建一个test.c文件。

在项目菜单里选择属性。

在弹出的窗口的左边的栏目里选择链接器—输入,然后在右边区域选择附加依赖,弹出窗口。

在附加依赖窗口里如下图填写依赖文件,然后点击确定按钮。

在左边栏选择c/c++下的代码生成。在右边窗口中做如下设置:

这样,我们就配置好了工程的属性,工程配置无论是第一种方式还是第二种方式都要配置。

下面在test.cpp 里输入测试代码:

 1 #include <stdio.h>
2
3 #include <stdlib.h>
4
5 #include <SDL\SDL.h>
6
7 SDL_Surface *gpScreen;
8
9 int main(int argc,char *argv[])
10
11 {
12
13 if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {
14
15 exit(-1);
16
17 }
18
19 gpScreen = SDL_SetVideoMode(600,600, 0,
20
21 SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF );
22
23 if( NULL == gpScreen ) {
24
25 SDL_Quit();
26
27 return -1;
28
29 }
30
31 SDL_Delay(3000);
32
33 SDL_FreeSurface(gpScreen);//退出程序前必须释放
34
35 SDL_Quit();//关闭SDL各个子系统
36
37 system("pause");
38
39 return 0;
40
41 }

 

注意必须包含头文件<SDL\SDL.h>,其中SDL是你在安装目录\include下建立的目录,vc所有的头文件都在include目录下,我们引用stdio.h等头文件都是从include下查找的, SDL.h在include下SDL目录下,所以引用它必须用#inlcude < SDL\SDL.h >,再者主函数头必须这样写int main(int argc,char *argv[]),不能写成int main(void)。

如果编译通过,运行的时候会出现两个窗口:

image

那么证明你sdl安装成功,可以编写游戏了。

如果是第二种方法,打开vc的工具菜单-选项:

image

在选项窗口里左边栏里选择项目和解决方案---vc++目录(vs2010下不能配置,因为vs2010vc++目录下没有这些东西)

image

在“显示以下内容的目录”---包含文件,点击 image

image

点击 image ,选择你按第二种方式建立的SDL目录下的include目录

image

同样的方式,选择“库文件”

image

点击 image ,选择你按第二种方式建立的SDL目录下的lib目录

image

动态库的路径可以这样添加,右键我的电脑—属性,选择高级。

image

点击环境变量按钮。

image

在系统变量下选择path

image

点编辑

image

在变量值的最后面,添加一个分号(西文状态),然后将你按第二种方式建立的SDL目录下的dll目录的路径写下,如下图。

image

最后面一定要有一个\。

第二种方式配置完毕后,也要按第一种方式配置项目属性,添加依赖项。

为什么要用第二种方式呢,因为第一种方式往系统目录下添加文件,可能覆盖其他程序的文件,从而影响其他程序的使用,所以采用第二种方式,第二种方式不会影响其他程序。

至此,SDL环境就配置完毕了,下一次将讨论简单的SDL起动。

posted @ 2011-09-26 14:43  成少雷  阅读(15891)  评论(12编辑  收藏  举报