Windows10 64位MinGW环境如何安装SDL 1.2.15及SDL_gfx、SDL_ttf
64位Windows 10 MinGW环境下SDL 1.2.15及对应扩展安装方案
完全可行,不需要找第三方预编译包——网上流传的SDL1.2预编译包基本都是十几年前的32位版本,或者是Linux平台的,自己从源码编译适配64位MinGW是最稳妥的方案,全程没有特殊门槛。
前置准备
- 确认你用的是64位MinGW(即mingw-w64分支,目标架构为x86_64-w64-mingw32),已经把MinGW的bin目录加入系统PATH,打开命令行输入
gcc -v能正常返回64位编译器版本信息即可。 - 准备好三份源码包:SDL 1.2.15官方源码、适配SDL1.2分支的SDL_gfx源码、SDL_ttf 2.0.11(这是SDL_ttf最后一个适配SDL1.2的稳定版本,不要拿SDL2分支的包,版本完全不兼容)。
编译安装SDL 1.2.15核心库
- 把SDL1.2.15源码解压到没有中文、没有空格的本地路径,打开MinGW终端进入源码根目录。
- 执行配置命令:
./configure --prefix=/mingw64 --enable-shared --enable-static --disable-directx --host=x86_64-w64-mingw32
加--disable-directx是为了规避旧版SDL1.2在64位Windows下DirectDraw接口的兼容bug,如果你确实需要DirectX渲染支持可以去掉这个参数,后续编译如果报错再补对应小补丁就行。
- 配置无报错后依次执行编译安装命令:
make -j4 make install
执行完成后,MinGW目录下的bin文件夹会生成64位的SDL.dll,lib文件夹会生成对应静态/导入库,include文件夹会生成SDL头文件,核心库就装完了。可以写个几行的SDL初始化测试代码编译跑一下,能正常弹出窗口就说明核心库没问题。
编译安装SDL_gfx扩展库
SDL_gfx没有额外依赖,只要核心库装对了基本不会出问题:
- 解压SDL_gfx源码,进入根目录执行配置:
./configure --prefix=/mingw64 --host=x86_64-w64-mingw32
- 执行
make -j4 && make install,头文件和库文件会自动部署到MinGW的对应目录。
编译安装SDL_ttf扩展库
SDL_ttf 1.2分支依赖FreeType库,先提前编译安装64位版本的FreeType 2.x(选2.5.x到2.8.x之间的版本就行,太新的版本可能和旧版SDL_ttf有接口兼容问题),编译流程和上面一致,configure配置后make install即可。
- 解压SDL_ttf 2.0.11源码,进入根目录执行配置:
./configure --prefix=/mingw64 --host=x86_64-w64-mingw32 --with-sdl-prefix=/mingw64 --with-freetype-prefix=/mingw64
- 配置无报错后执行
make -j4 && make install,装完之后编译时加-lSDL_ttf就能调用对应功能了。
编译项目的注意事项
编译自己的SDL项目时,链接参数顺序不能错,参考如下:
gcc your_code.c -o app.exe -lmingw32 -lSDLmain -lSDL -lSDL_gfx -lSDL_ttf -mwindows
注意:
-lmingw32和-lSDLmain必须放在-lSDL前面,否则一定会出现WinMain未定义的链接错误。
常见踩坑提示
- 别硬套网上的32位预编译包,64位进程加载32位dll会直接启动失败,自己编译的库和当前MinGW环境完全匹配,不会有架构兼容问题。
- 如果编译SDL1.2.15时报wingdi、mmdevice相关的API未定义错误,检查你的MinGW64有没有装全win32api开发包,缺的话通过MinGW自带的包管理器补装就行。
内容的提问来源于stack exchange,提问作者FebanHD
相关产品推荐
相关产品推荐

