4 Commits

Author SHA1 Message Date
Calcitem 6fb0adc53c 将 jbig2dec 的源码还原为原始代码
并改为使用修改工程配置的方法解决编译问题。
目的是后续升级 jbig2dec 时直接使用上游新代码覆盖即可,无需再合并代码。

jbig2dec 原始代码来源为:
https://github.com/ArtifexSoftware/jbig2dec/tree/a5b9b7cd7b9ed349964eb89883c4b22c410b3398

操作步骤:
将 jbig2dec 原始代码中所有的 .h 覆盖到 JBig2/include/ 目录;
将 .c 文件覆盖到 JBig2/src/ 目录;除了 getopt.c 和 getopt1.c 两个多出来的文件未拷贝。
覆盖后这些文件撤销了之前为解决编译问题而修改的代码。

对于 Visual Studio 的编译错误:
Error C4146 unary minus operator applied to unsigned type, result still unsigned
解决方式为,在 Visual Studio 的
jbig2 Property Pages -> Configuration Properties -> C/C++ -> Command Line -> Additional Options
增加 -w24146 来解决。
Release 和 Debug 都增加。
2022-01-14 14:24:47 +08:00
WMJ bbe25ff896 Revert "改为使用 Git 子模块的方式来管理 jbig2dec 库的源码" 2022-01-08 09:27:01 +08:00
Calcitem 6afd95620b 改为使用 Git 子模块的方式来管理 jbig2dec 库的源码
Git Submodule 的好处为可以简化项目依赖管理,方便更新维护。
当上游第三方库更新时,无需手动更新并提交代码,节省了版本库空间。
并且可以按需 checkout 到指定版本并提交以固定住。
(当前取 master 分支即可,因为此分支代码和 JBig2 目录的代码几乎一致,
差异点只是 JBig2 目录中的代码解决了 MSVC 下的一些编译问题,不过这些
问题是可以不修改代码就可以解决的,下文将详述之。)
并且 GitHub 等代码托管平台的依赖关系图中可以解析出库依赖关系。

相关步骤:
(1) 执行 git submodule add https://github.com/ArtifexSoftware/jbig2dec.git
(2) 移除 JBig2/include 以及 JBig2/src 下和 jbig2dec 中重复的 .h/.c 文件;
(3) 在 Visual Studio 的 Solution Explorer 中将 jbig2 项目中的 .h/.c 文件替换
    为 jbig2dec 中的文件。如果 jbig2dec 目录中没有的文件,则不替换。
(4) 解决编译问题。在没有使用 Git 子模块之前,是通过修改 JBig2 目录下的代码文件
    来解决编译问题的,现在改为修改编译配置解决,包括如下几点:
    * Error C4996 'strdup': The POSIX name for this item is deprecated.
      Instead, use the ISO C and C++ conformant name: _strdup. See online help for details.
    * Error C4146 unary minus operator applied to unsigned type, result still unsigned
    * Error C1083 Cannot open include file: 'strings.h': No such file or directory
    上述3个编译错误通过在 Visual Studio 的
    jbig2 Property Pages -> Configuration Properties -> C/C++ -> Command Line -> Additional Options
    增加 -w44996 -w24146 /D "HAVE_STRING_H" 来解决。
    继续编译时出现的错误,则通过将 gitopt.c、gitopt1.c、jbig2_image_pbm.c、jbig2_arith.c 添加到工程中解决。
(5) 更新 readme.md.

已知问题:
而对于 jbig2enc 目录则无法切换到 Git 子模块的形式,因为其中的修改量较大,不能直接引用原始库。

参考资料:
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97
2022-01-08 03:07:01 +08:00
WMJ b42bfb98fa PDF补丁丁公开源代码 2021-12-24 20:35:03 +08:00