分类 C++ 下的文章

2025-06-30:写完这篇文章后发现,虽然编译成功了,能够正常使用libtiff库,但是libtiff库默认不支持jpeg格式,所以如果需要libtiff能够解析jpeg格式文件,需要附带jpeg进行编译,这个我还没有完全实现。待填坑ing……

背景:Windows11、VS2019、已成功安装libtiff库但无法解析使用了JPEG压缩的tiff或者svs图像

使用libtiff库时报错:
xxx.tiff: JPEG compression support is not configured.

问题出现的原因是libtiff库本身不支持JPEG压缩,所以需要额外安装JPEG压缩第三方库

步骤:
1.首先是安装并解压 JPEG压缩包,点击界面上的 jpegsr9f.zip 链接就会自动下载zip包
2.打开vs2019的“Developer Command Prompt for VS 2019”工具(系统搜索能搜到)
3.cd到jpeg-9f这个目录
4.键入命令行 nmake /f makefile.vs setup-v16 ,当前目录下会自动生成一个jpeg.sln
5.用vs2019打开jpeg项目,配置改成release x64,右键项目生成
6.测试是否成功:vs2019打开jpeg-9f目录下的apps.sln,全部生成
7.还是用第二步的工具,在jpeg-9f/这个目录下,执行命令 nmake /f makefile.vs test-64
8.若出现下面这个结果则表示JPEG库编译成功

Microsoft (R) 程序维护实用工具 14.29.30147.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

        IF EXIST .\Release\testout* del .\Release\testout*
        .\Release\x64\djpeg -dct int -ppm -outfile .\Release\testout.ppm testorig.jpg
        .\Release\x64\djpeg -dct int -gif -outfile .\Release\testout.gif testorig.jpg
        .\Release\x64\djpeg -dct int -bmp -colors 256 -outfile .\Release\testout.bmp testorig.jpg
        .\Release\x64\cjpeg -dct int -outfile .\Release\testout.jpg testimg.ppm
        .\Release\x64\djpeg -dct int -ppm -outfile .\Release\testoutp.ppm testprog.jpg
        .\Release\x64\cjpeg -dct int -progressive -opt -outfile .\Release\testoutp.jpg testimg.ppm
        .\Release\x64\jpegtran -outfile .\Release\testoutt.jpg testprog.jpg
        fc /b testimg.ppm .\Release\testout.ppm
正在比较文件 testimg.ppm 和 .\RELEASE\TESTOUT.PPM
FC: 找不到差异

        fc /b testimg.gif .\Release\testout.gif
正在比较文件 testimg.gif 和 .\RELEASE\TESTOUT.GIF
FC: 找不到差异

        fc /b testimg.bmp .\Release\testout.bmp
正在比较文件 testimg.bmp 和 .\RELEASE\TESTOUT.BMP
FC: 找不到差异

        fc /b testimg.jpg .\Release\testout.jpg
正在比较文件 testimg.jpg 和 .\RELEASE\TESTOUT.JPG
FC: 找不到差异

        fc /b testimg.ppm .\Release\testoutp.ppm
正在比较文件 testimg.ppm 和 .\RELEASE\TESTOUTP.PPM
FC: 找不到差异

        fc /b testimgp.jpg .\Release\testoutp.jpg
正在比较文件 testimgp.jpg 和 .\RELEASE\TESTOUTP.JPG
FC: 找不到差异

        fc /b testorig.jpg .\Release\testoutt.jpg
正在比较文件 testorig.jpg 和 .\RELEASE\TESTOUTT.JPG
FC: 找不到差异...

环境VS2019、Windows11、cmake-3.18.0-win64-x64、待安装libtiff版本是4.7.0
注意:高版本的cmake必然会报错,太低版本的又不支持vs2019,而cmake3.18.0刚刚好,既能支持vs2019也能编译出libtiff库4.7.0这个版本

cmake-gui 4.0.2报错:弹窗报错Error inconfiguration process,preject files may be invalid

具体的报错信息(balabala一堆反正就是版本有问题,libtiff库这里cmakelists.txt这个版本号都是最小3.9了,不太懂)
CMake Error at doc/CMakeLists.txt:27 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.

Update the VERSION argument value. Or, use the ... syntax
to tell CMake that the project requires at least but has been updated
to work with policies introduced by or earlier.

Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.

步骤:
1.下载并解压各个版本libtiff下载地址
2.cmake3.18.0 gui打开,如下图所示去配置
mbkkywqj.png
3.点击configure再点击generate就把该要的全部输出到第二个目录底下了
4.直接把tiff文件夹底下的include和lib目录放到vs项目的主目录下

vs2019项目配置:
1.C/C++常规->附加包含目录加上$(ProjectDir)include
2.链接器->常规->附加库目录加上$(ProjectDir)lib
3.链接器->输入->附加依赖项加上tiff.lib和tiffxx.lib