IJG 是一个非正式小组,负责编写和分发用于 JPEG 图像压缩的广泛使用的免费库。第一版于 1991 年 10 月 7 日发布,当前最新的版本号是 2020 年 1 月 12 日发布的 9d 。libjpeg 为许多应用程序的 JPEG 支持奠定了坚实的基础。

本篇文章主要是介绍在 Windows 平台下,如何编译 libpng 的静态库。在开始之前,请确认你的机器已经安装了 Visual Studio,如果你不知道怎样安装,可以参考 Visual Studio 安装教程

官网下载最新的源码包,解压。目录中包含了很多 makefile 开头的文件,其中 makefile.vs 就是 Windows 平台编译需要的配置文件。

打开开始菜单,找到 VS2019 的命令行工具,推荐 x64 版本(看你自己电脑的版本)。

开始菜单

切换目录到 jpeg 的源码目录:

cmd

如果你的电脑上安装的是 VS2019 以后的版本(包括 VS2019),则执行:

NMAKE /f makefile.vs setup-v16

否则执行:

NMAKE /f makefile.vs setup-vc6

执行完毕后,会生成相应的工程文件。因为我安装的是 VS2019,所以会生成 jpeg.sln 解决方案。可以直接双击打开:

解决方案

解决方案可以直接编译出 Release 版本,遗憾的是工程配置中不包含 Debug 版本,我们需要自己增加一个配置方案。

Release 方案

在菜单栏,可以点击下拉列表,打开配置管理器:

配置管理器

打开活动解决方案配置下方的下拉列表,点击新建按钮:

新建配置

起名为 Debug,并且方案的属性从 Release 复制。这样我们就有了一个名称为 Debug,但是属性为 Release 配置方案。

接着我们修改 Debug 方案的工程属性,右键打开工程属性:

右键属性

选择 Debug 配置进行调整:

常规页面

修改 C/C++ 常规如下:

C/C++ 常规页面

修改 C/C++ 优化如下:

C/C++ 优化页面

修改 C/C++ 预处理器如下(主要是宏定义):

C/C++ 预处理页面

修改 C/C++ 代码生成如下:

C/C++ 代码生成页面

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

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

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

求关注