一、Windows系统下的安装
- MinGW
①安装MinGW并配置好环境变量;
②官网下载SDL for MinGW;
③将解压文件中的 .\i686-w64-mingw32\include\SDL2 复制到 .\MinGW\include ; //有的设备需要用x86_64-w64-mingw32中的文件,下同
④将解压文件中的 .\i686-w64-mingw32\lib中的 .a 和 .la 们全都复制到 .\MinGW\lib 下面;
⑤将解压文件中的 .\i686-w64-mingw32\bin\SDL.dll 复制到源文件所在文件夹;
⑥编辑文件并编译,编译命令如下:
gcc [filename] (-o [output]) -lmingw32 -lSDL2main -SDL2
这里我是将它写成了 .bat 文件,即Windows批处理脚本,内容如下:
cmd /c gcc %1 -o %2 -lmingw32 -lSDL2main -lSDL2
当我们在控制台编译时,只需要像这样就可以啦( gccsdl 是我写的 .bat 文件):
gccsdl HelloSDL.c HelloSDL.exe
有一个点需要注意一下,在SDL.h中有如下宏定义:
#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
#define main SDL_main
#endifint SDL_main(int argc, char **argv);
main()函数的标准写法只有两个:int main(void);
和 int main(int argc, char *argv[]);
,这里可以看到SDL要求我们必须写成第二种。(亲身试验,写第一种会报错)
- VS & VC
我还没搞得定嘿嘿嘿以后再来
二、基本的函数
- SDL初始化
/* SDL初始化函数 */
int SDL_Init(Uint32 flags);
/********************************************其中flags为欲初始化的位标,一般有如下几种:SDL_INIT_TIMER (定时器)SDL_INIT_AUDIO (音频)SDL_INIT_VIDEO (视频)SDL_INIT_JOYSTICK (摇杆)SDL_INIT_HAPTIC (触摸屏)SDL_INIT_GAMECONTROLLER (游戏控制器)SDL_INIT_EVENTS (事件)SDL_INIT_NOPARACHUTE (不捕获关键信号(?))SDL_INIT_EVERYTHING (包含上述所有选项)
********************************************/
- SDL退出
/* SDL退出函數 */
void SDL_Quit(void);
/*****************************************************************我們來看看官方對这个函数的描述:“This function cleans up all initialized subsystems. You shouldcall it upon all exit conditions.”(这个函数清除所有初始化的子系统。您应该在所有退出条件下调用它。)实际上就是跟EasyX的closegraph()差不多的感觉嘛。
******************************************************************/
- 检测是否已初始化
/* 检测是否已经完成了初始化 */
Uint32 SDL_WasInit(Uint32 flags);
/*********************************************************************还是看官方注释:“This function returns a mask of the specified subsystems which have
previously been initialized.”(这个函数返回先前已经初始化的指定子系统的掩码。)“If \c flags is 0, it returns a mask of all initialized subsystems.”(如果\c标志为0,则返回所有初始化子系统的掩码。)(这个\c是个啥玩意?)
**********************************************************************/
- 中途的装载
/* 中途的装载 */
int SDL_InitSubSystem(Uint32 flags);
/*******************************************这个很简单就不看官方注释了,就是在SDL_Init()之后还想要装载东西用的函数。
********************************************/
- 中途的退出
/* 同上,有中途装载就有中途退出嘛 */
void SDL_QuitSubSystem(Uint32 flags);
- 错误信息报告
/* SDL错误信息报告 */
const char * SDL_GetError(void);
/* 写入错误 */
int SDL_SetError(const char *fmt, ...);
/* 清除错误 */
void SDL_ClearError(void);
好,你看到这里我都水了2139个字了。最基础的部分到此结束,那我们下期精彩继续。