SDL2_image 是图像文件加载库。它将图像加载为 SDL 表面和纹理,并支持以下格式:BMP,GIF,JPEG,LBM,PCX,PNG,PNM,SVG,TGA,TIFF,WEBP,XCF,XPM,XV 。SDL_image 官方默认提供的都是动态库,而本教程主要介绍在 Windows 平台下如何静态编译 SDL_image 库。

因为 SDL_image 依赖其它的第三方库,包括 zliblibjpeglibpnglibtifflibwebp 以及 SDL2 ,这些库都必须提供静态编译版本,并且在开始编译前请确认你的机器上以及安装了最新版的 Visual Studio 。

首先去官方网站,下载源码包,当前最新的版本为 2.0.5。

官网

因为 SDL2_image 源码默认提供的是动态编译的版本,并且没有相关的 CMake 文件,所以只能手动新建静态库工程,然后把源码加入编译。

首先,创建一个新的静态编译工程,打开 Visual Studio。

vs2019

选择右下角的创建新项目

创建新项目

选择 Windows 桌面向导,点击下一步。

配置新项目

输入项目名称以及项目的位置,点击创建按钮。

桌面项目

在弹出的对话框中,选择静态库,并勾选空项目,点击确认。

解决方案

复制 SDL2_image 官方源码加入到咱们新建的静态工程中,接着配置工程属性。选择工程右键打开属性面板,在 C/C++ 常规 面板下,添加附加包含目录,包括所以依赖的第三方库的头文件:

添加头文件

点击确定后,修改移除 SDL 检查 选项:

去除 SDL 检测

预处理器 面板下,添加预处理器定义:

LOAD_BMP
LOAD_GIF
LOAD_JPG
LOAD_LBM
LOAD_PCX
LOAD_PNG
LOAD_PNM
LOAD_SVG
LOAD_TGA
LOAD_TIF
LOAD_WEBP
LOAD_XPM
LOAD_XV

预处理面板

设置完毕,就可以编译 SDL2_image 静态库了。按照 Debug/Release 和 /MT 以及 /MD 之分,至少可以组合四种配置,所以我们分别选择不同的配置属性,生成最后的四种库文件,并将它们放到不同的目录下。具体的配置方法可以查看 运行时库详解 这篇文章,每次修改配置都编译一次工程,编译成功后,将生成的结果放到一开始设定的目录下,最后的目录结构如下:

---
 |--- include //放头文件
 |--- lib
       |--- Debug
       |      |--- MDd
       |      |     |-- SDL2_image.lib
       |      |
       |      |--- MTd
       |            |-- SDL2_image.lib
       |
       |--- Release
              |--- MD
              |     |-- SDL2_image.lib
              |
              |--- MT
                    |-- SDL2_image.lib

为了方便这里我打包了最后的结果,方便大家直接使用,不过这里只有 x64 版本,如果你的机器还是 32 位系统则无法使用。SDL2_image 静态库下载