参考:http://www.cnblogs.com/landmark/archive/2011/09/26/2191693.html 感谢前辈分享!
平台:VS2012
下载包
SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。
SDL图形库包括八个子系统:视频、音频、事件、光驱、文件读写、游戏杆、时间、进程。最经常使用的是前三个,每一个子系统都有专门的安装包:
SDL安装包:下载SDL-devel-1.2.15-VC
图像子系统安装包:
音频子系统安装包:
这三个安装包都包含了这样两个目录:include和lib。其中include目录存放的头文件,就像C语言自带的头文件一样,要使用SDL系统的函 数,必须包含相应的头文件,lib目录下存放的是一些静态库(.lib)和动态库(.dll),这些库里存放的是函数的二进制代码,你在你的程序里包含了 头文件以后,还要加载相应的库,否则编译器找不到相应的函数的代码会报错的,C语言自带的库默认就添加到了你C语言程序里了,不用显示自己管,但SDL不是C语言自带的库,所以必须自己添加这些库。
要添加这些库,有两种方式,第一种是把头文件,库文件放到系统目录下,让编译器能找的到就可以了;第二种,自己建一个目录包含头文件、动态库、静态库,然后在编译器里设置工程属性就可以了。建议使用第二种方式。下面就这两种方式分别说明。
安装和配置过程
本文直接使用第二种方式,第一种方式可以参考文章开头的连接。
首先建立一个目录,假定名字为SDL_1.2.15,在目录下建三个文件夹:include、dll、lib,将下在下来的三个安装包解压,比如SDL-devel-1.2.15-VC.zip解压后会有两个目录:include和lib。然后将这三个解压后的文件夹里面的include、lib文件夹里面的内容拷贝到SDL_1.2.15里面的include和lib,然后把这个lib里面的dll文件再剪切出来到SDL_1.2.15\dll文件夹里面。然后开始建立VS工程,配置project。
(E:\CExtLibs\SDL_1.2.15这是我新建立的文件路径。这个路径下是安装SDL1.2.15版本的C库文件的路径,里面包含include、lib、dll。)
首先,添加environment variable:
可以使用命令行工具,必须以管理员身份运行:
set -m SDL1_2_15_DIR E:\CExtLibs\SDL_1.2.15
这样就自动在环境变量中产生一个名字为SDL1_2_15_DIR,值为以上目录的变量,目的:方便以后更改路径,只要改变量名里面的东西,不需要改太多path的值。
然后,在Path中添加如下路径:
%SDL1_2_15_DIR%dll\ (Note the "\")
在VS的project property中添加SDL的include和lib的路径以及lib的名称。
$(SDL1_2_15_DIR)\include
$(SDL1_2_15_DIR)\lib
lib:
SDL.lib;SDL_image.lib;SDL_mixer.lib;SDLmain.lib;
The test code:
//version:SDL1.2.15
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
SDL_Surface *gpScreen;
int main(int argc,char *argv[])
{
if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1))
{
exit(-1);
}
gpScreen = SDL_SetVideoMode(600,600, 0,
SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF );
if( NULL == gpScreen )
{
SDL_Quit();
return -1;
}
SDL_Delay(30);
SDL_FreeSurface(gpScreen);//退出程序前必须释放
SDL_Quit();//关闭SDL各个子系统
system("pause");
return 0;
}
成功运行的结果是: