已经被SDL2各种安装失败逼疯了,刚刚终于成功了!写篇博客以示后人!
下载的CodeBlocks来自这个网站 http://www.codeblocks.org/downloads/26 选择的是codeblocks-13.12mingw-setup.exe这个版本
SDL2的下载来自这个网站http://www.libsdl.org/release/ 我选择的是SDL2-devel-2.0.4-mingw.tar.gz这个版本。
都下载好之后,先安装CodeBlocks。如果之前安装过,那么去C:\Users\你的用户名\AppData\Roaming下面找CodeBlocks这个文件夹然后直接删掉。这样会丢失之前的Layout配置和编译器配置。(不过也是反复安装尝试过程中还原回0的最快方法)
这里,我把CB安装到了D:\Program Files (x86)\CodeBlocks
解压SDL2安装包,假设解压后路径是D:\Program Files (x86)\CodeBlocks\SDL2-devel-2.0.4-mingw,那么直接把D:\Program Files (x86)\CodeBlocks\SDL2-devel-2.0.4-mingw\SDL2-2.0.4\include文件夹下所有内容复制到D:\Program Files (x86)\CodeBlocks\MinGW\include下,接下来复制D:\Program Files (x86)\CodeBlocks\SDL2-devel-2.0.4-mingw\SDL2-2.0.4\lib\x86文件夹下所有内容到D:\Program Files (x86)\CodeBlocks\MinGW\lib。要注意的是,这里SDL2.dll不复制,而是复制到C:\Windows下(网上好多人说这样会引起什么什么的,顾虑太多反而没办法安装成功)
好的,只差最后一步了:打开CB,选Settings->Compiler,左面三个大图标里面选第一个,右边选项卡选Linker Settings,然后在Other Linker options里面加上-lSDL2 -lSDL2main -lSDL2test
下面是从网上找的一段测试代码,不出意外的话 (没有意外)以下代码输出的是
SDL initialize ok!
#include <SDL.h> #include <stdio.h> #undef main // 由于SDL内部重定义了main, main函数一定得是这个形式,具体为何,后面详细说明 int main(int argc, char * argv[]) { // 初始化SDL if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)== -1)) { // 初始化失败,打出错误,注意SDL_GetError返回一个字符串,可读性很好,是不是? printf("Could not initialize SDL: %s.\n", SDL_GetError()); } else { printf("SDL initialize ok!"); } // 结束SDL SDL_Quit(); getchar(); return 0; }