原文链接Lazy Foo’ Productions (2004-2015)
因为我用的code block,所以这里只放下code block的环境配置方法供参考~
- 从官网下载 SDL 2,code block默认使用的是 MinGW编译器,所以最好下载图片中箭头指着那个版本。
下载完成后解压文件,里面会包含i686-w64-mingw32 文件夹和x86_64-w64-mingw32 文件夹,前面那个是32位的,后面的是64位的,即便用的是64位的系统,很多编译器依然是32位的编译器,所以推荐使用32位的文件夹。 - 在code block中创建一个新的空项目。设置好位置,一路next~
- 移步Project->Properties,在打开的配置窗口中点击Project’s build options。
- 弹出的窗口中选择Search directories选项卡,子选项卡选择Compiler。这一步需要告诉编译器SDL2头文件的位置,添加地址如图所示(以第一步中解压后文件的地址为准,下同)。
如果编译时出现can’t find SDL.h一类的编译错误,说明这一步你搞砸了。 - 这一步我们要告诉编译器库文件的位置啦~,子选项卡选择Linker然后添加库文件的地址,如图所示。
如果编译时出现了can’t find lSDL2, lSDL2main一类的错误,则是这一步搞砸了。 - 选择Linker setting选项卡,并复制粘贴下面这行链接指令。
-lmingw32 -lSDL2main -lSDL2
- 第一步中解压出来的文件中有个动态链接库文件SDL2.dll,把这个文件拷贝到C:\Windows\SysWOW64 (64位系统)或者C:\WINDOWS\SYSTEM32 (32位系统)文件夹中。
- 建立一个新的cpp文件,添加如下代码到这个文件中。
/*This source code copyrighted by Lazy Foo' Productions (2004-2015)
and may not be redistributed without written permission.*/
//Using SDL and standard IO
#include <SDL.h>
#include <stdio.h>
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main( int argc, char* args[] )
{
//The window we'll be rendering to
SDL_Window* window = NULL;
//The surface contained by the window
SDL_Surface* screenSurface = NULL;
//Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
}
else
{
//Create window
window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
if( window == NULL )
{
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
}
else
{
//Get window surface
screenSurface = SDL_GetWindowSurface( window );
//Fill the surface white
SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
//Update the surface
SDL_UpdateWindowSurface( window );
//Wait two seconds
SDL_Delay( 2000 );
}
}
//Destroy window
SDL_DestroyWindow( window );
//Quit SDL subsystems
SDL_Quit();
return 0;
}
编译运行,出现一个白色的窗口就成功啦~