leptonica依赖的相关库的生成

2023-11-16

leptonica依赖的相关库的生成

写在前面,笔者观摩大量大佬的教程完成的本篇文章,反正我是成功了,电脑Win10+64位,VS2017版本。用到的源码由于试过太多来源,部分已经忘记哪儿来的了,有空我也传份上来。哈哈。

至于为此学习过的文章,下面都给出连接了,大家需要自取。
话说我这算原创吗?我先选原创了,哈哈,第一篇原创,打字好累哦。

注意:使用cmake-gui要勾选grouped和advanced
cmake编译必须要有 CMakelist.txt,它是CMake脚本代码和配置参数的载体,源代码目录中没有它的话,工程就不可能使用CMake的配置程序来完成自动Makefile脚本的生成工作
注意:使用nmake编译必须要有makefile.vc文件

1.zlib

(1)下载zlib
(2)打开cmake-gui,源为zlib目录【E:/leptonica_library/zlib-1.2.11】,目标为zlib内新建的build文件夹【E:/leptonica_library/zlib-1.2.11/build】
(3)configure(设置),configure(保存),generate(生成)
(4)找到build里的zlib.sln文件,用vs2017打开,生成——生成解决方案(或者右击install——生成)
注意:分别在debug和release模式下生成
(5)编译的库zlib.lib出现在build/release文件夹内【E:\leptonica_library\zlib-1.2.11\build\Release】(也有.dll)
注意:zlibd.lib在debug文件夹内(也有.dll)

2.lpng

【步骤https://www.cnblogs.com/dilex/p/10732639.html】
(1)下载lpng
(2)打开cmake-gui,源为lpng目录【E:/leptonica_library/lpng1637】,目标为lpng内新建的build文件夹【E:/leptonica_library/lpng1637/build】
(3)configure(设置)
(4)将zlib目录配置进去
zlib_include_dir:zlib的目录【E:/leptonica_library/zlib-1.2.11】
zlib_library_release:release模式下生成的zlib.lib的目录【E:/leptonica_library/zlib-1.2.11/build/Release/zlib.lib】
(5)configure(保存),generate(生成)
(6)找到build里的lpng.sln文件,用vs2017打开,生成——生成解决方案(或者右击install——生成)
注意:分别在debug和release模式下生成
!!!出现问题,找不到zconf.h,就把它从build里面复制到外面(自己瞎试的,因为提示找不到,但是在build里面有)
(7)编译的库libpng16.lib出现在build/release文件夹内【E:\leptonica_library\lpng1637\build\Release】(也有.dll)
注意:libpng16d.lib在debug文件夹内(也有.dll)

3.jpeg

【下载http://www.ijg.org/files/】
(1)下载jpeg
(2)打开cmake-gui,源为jpeg目录【E:/leptonica_library/jpeg-9a】,目标为jpeg内新建的build文件夹【E:/leptonica_library/jpeg-9a/build】
(3)configure(设置)
!!!出问题了,好像是因为下载的JPEG包里面没有cmakelists.txt
(4)https://blog.csdn.net/qq_31359085/article/details/103822347
https://blog.csdn.net/weixin_30266885/article/details/97155645
于是决定根据这两篇文章,用nmake的方法编译库,看我接下来步骤
!!!出错的话,看这篇https://blog.csdn.net/sean4m/article/details/60143222
(5)进入jpeg-9a,将目录下的jconfig.vc复制一份并更名为jconfig.h
(6)developer command prompt for vs 2017【vs2017的开发者命令提示符】,(不要用cmd,后来比较了一下 cmd会有一些错误提示)进入jpeg-9a,(这里取决于要产生的库的版本,由于之前的都是32位的库,所以我在这里也生成32位的库),然后键入:nmake -f makefile.vc
!!!cmd和vs的开发人员工具命令的区别:(https://bbs.csdn.net/topics/392569692)
系统自带的cmd就是运行cmd.exe
如果是vs的开发人员工具命令行则会初始化很多环境变量
比如可以让方便的找到编译器,连接器和include,lib的地址等等
(7)在这里会提示未找到文件win32.mak,win10的系统里是没有这个东西的,可以从GitHub上下载到。解压后将Win32.Mak放到jpeg-9a目录下,或者可以将makefile.vc中的第12行改成win32.mak的路径。
(8)再次尝试nmake,
!!!出问题了,无法找到一些.h头文件,根据【https://blog.csdn.net/sean4m/article/details/60143222】判断是vs2017环境变量的设置问题,按网上教程【https://blog.csdn.net/kaige_zhao/article/details/80315697】试了一下
(9)再次尝试nmake,出现了一溜烟的长篇大论的代码,看不懂,但最后面是
LINK : warning LNK4010: 子系统版本号 5.0 无效;假定为默认子系统版本
LINK : fatal error LNK1181: 无法打开输入文件“kernel32.lib”
NMAKE : fatal error U1077: “E:\visualstudioIDE\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\link.EXE”: 返回代码“0x49d”
Stop.
!!!发现是前面vs2017的LIB环境变量少了一个的缘故,在电脑里搜索kernel32.lib,把它的路径加进去。
Path:
E:\visualstudioIDE\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86
E:\visualstudioIDE\Common7\IDE (这个教程里没加)
LIB:
E:\visualstudioIDE\VC\Tools\MSVC\14.16.27023\lib\x86
E:\Windows Kits\10\Lib\10.0.10240.0\ucrt\x86
E:\Windows Kits\10\Lib\10.0.17763.0\um\arm64
E:\Windows Kits\10\Lib\10.0.17763.0\ucrt\arm64
E:\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86(在cmd里运行的时候出错加进来的,估计没用,删掉以后在开发者命令里试了,不需要它)
INCLUDE:
E:\visualstudioIDE\VC\Tools\MSVC\14.16.27023\include
E:\Windows Kits\10\Include\10.0.10240.0\ucrt
(10)再次nmake -f makefile.vc
出现一堆代码,提示LINK : warning LNK4010: 子系统版本号 5.0 无效;假定为默认子系统版本,但是生成了libjpeg.lib
所以随它去吧。如果不对的话,请大家务必告诉我T^T

4.tiff

(1)下载tiff
(2)打开cmake-gui,源为tiff目录【E:/leptonica_library/tiff-4.0.9】,目标为tiff内的build文件夹【E:/leptonica_library/tiff-4.0.9/build】
(3)configure(设置),configure(保存),generate(生成)
!!!如果之前弄过不同目录的,file——delete cache
(4)找到build里的tiff.sln文件,用vs2017打开,生成——生成解决方案(或者右击install——生成)
注意:分别在debug和release模式下生成
(5)编译的库tiff.lib出现在build/libtiff/release文件夹内【E:\leptonica_library\tiff-4.0.9\build\libtiff\Release】(也有.dll)
注意:tiffd.lib在debug文件夹内(也有.dll)

5.giflib

(1)下载giflib
!!!太惨了,又是没有cmakelists.txt的,还没有makefiles.vc,用vs编译吧
【参考https://blog.csdn.net/zdyueguanyun/article/details/49906071那篇教程我没看懂,还是请教了人才弄明白的,我太难了T^T】
下面我的步骤就是这个方法(vs编译)的实现过程。
(2)在资源管理器里搜索#include <stdbool.h>,注意勾选高级选项里面的“文件内容”,这样能够搜索文件内是否有要搜的内容
(3)全选搜索出来的文件,拖到notepad++里面,搜索——替换
查找目标:#include <stdbool.h>
替换为//#include <stdbool.h>\n #ifndef __cplusplus\n typedef int bool;\n #define false 0\n #define true 1\n #endif
注意:勾选“全词匹配”,不勾选“循环查找”,选择查找模式“扩展”,点击“替换所有打开文件”
补充:原来应该替换成的代码如下,为了能够显示为多行,所以加了\n
//#include <stdbool.h>
#ifndef __cplusplus
typedef int bool;
#define false 0
#define true 1
#endif
(4)文件——全部保存。将替换好的文件保存下来。
!!!下面进入静态库建立
(5)新建静态库工程:vs2017新建——项目——visualc++——跨平台——Windows通用——静态库(通用windows)
(6)右键Resources Files——添加——现有项
(7)弹出的窗口中找到源码目录下,分别输入*.h、*.c文件查找到所有的.h,.c,.cpp文件,加入到此工程中
(8)生成——重新生成解决方案
提示几十个错误:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h””
解决方法:项目——XXXX属性——C/C++——预编译头——预编译头(选择“不使用预编译头”)
(9)生成——重新生成解决方案
提示几十个错误:fopen:this function or variable may be unsafe.consider using fopen_s instead.……还有类似的strerror、wcstombs……等等许多。
解决方法:项目——XXXX属性——C/C++——常规——SDL检查(选择“否(/sdl)”)
(10)生成——重新生成解决方案
提示多个错误:无法打开包括文件unisd.h
解决方法:把包含是unistd.h的地方,都替换成io.h
提示错误:无法打开包括文件getopt.h
解决方法:下载getopt,添加到vc的include(里面放头文件)和lib(里面放静态库)文件夹。
(11)生成——重新生成解决方案,现在应该有lib生成了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leptonica依赖的相关库的生成 的相关文章

随机推荐

  • 服务器装系统都会有哪些坑,小白装机避坑——电脑装系统篇 二

    装机系统分区 首先你需要安装好你的固态硬盘 开机 进入系统 一般用的分区工具都是 DiskGenius 这个软件 粗暴的组装 不需要机箱 一台电脑里面只能设置一个盘作为系统盘 也就是我们的主分区 切记 先对硬件进行测试组装 看看能不能正常启
  • 1125 斐波那契数列

    题目描述 输入整数n 输出斐波那契数列的前n项 输入要求 输入一个整数n 1 lt n lt 12 输出要求 输出斐波那契数列的前n项 每个数后面都有空格 输入样例 6 输出样例 1 1 2 3 5 8 提示 斐波那契数列的排列规则为 第1
  • echarts legend文字颜色

    legend textStyle color fft
  • 一个有意思的let面试题

    今天看到一个面试题 let des 我在外边 let obj des 我在里面 foo function console log this des let bar obj foo bar 这个bar 调用后会打印出什么 本以为是考 this
  • 查看微信小程序的appID和secret

    https mp weixin qq com wxopen devprofile action get profile token 1504304474 lang zh CN 转载于 https www cnblogs com fuckin
  • springmvc源码学习(三十)@ControllerAdvice 全局异常处理

    目录 前言 一 示例 二 原理 前言 在请求到达了 DispatcherServlet 的处理流程 进入 doDispatch 以及后续流程处理业务的过程中出现异常 会进入到 processDispatchResult 处理异常 此时 如果
  • C++-- 如何在类外访问一个类中私有的成员变量?

    如何在类外访问一个类中私有的成员变量 我在网上搜答案的时候看到大部分回答都是在类内部创建一个接口 所以此方法我就不再多做赘述 今天我说的是利用指针 边看代码边理解 上代码 class Test private int a 10 int b
  • win32汇编语言实现冒泡排序

    1 背景 现在大多数的大规模程序并不是由汇编语言来编写 原因很简单 因为太耗时了 但是汇编语言仍然被广泛运用在配置硬件设备以及优化程序的执行速度和尺寸大小等方面 特别是在逆向工程方面 更需要深入理解与熟练掌握汇编语言 针对现阶段 看汇编基本
  • unity04 解决导入fbx文件黑模问题

    左上角window gt rendering gt lighting gt new lighting settings gt 勾选auto generating
  • TensorFlow在MNIST中的应用-卷积神经网络CNN

    参考 TensorFlow技术解析与实战 用TensorFlow搭建一个卷积神经网络CNN模型 并用来训练MNIST数据集 coding utf 8 20171115 HelloZEX 卷积神经网络
  • 【软件测试】----自动化测试详解

    自动化测试指软件测试的自动化 在预设状态下运行应用程序或者系统 预设条件包括正常和异常 最后评估运行 结果 将人为驱动的测试行为转化为机器执行的过程 常见的自动化测试工具 QTP selenium Rational Robot jmeter
  • QtDesigner设计中关于PyQt5与pyside2的报错坑

    关注公众号可获取资料分享 0 前言 Qt Designer是使用Qt部件设计和构建图形用户界面 gui 的Qt工具 您可以以 what you see is what you get WYSIWYG 的方式组合和自定义窗口或对话框 并使用不
  • JSON取值(key是中文或者数字)方式详解

    先准备一个json对象用于演示 var json name zhangsan 年龄 23 404 你可能迷路了 使用JS中with关键字 with json console log name 输出 zhangsan console log
  • 基于STM32的智能电子药盒设计

    1 前言 据报告显示中国有2 3亿的60岁以上老人 占全国总人口的六分之一 在老年人中 有65 以上的老年人都是慢性病患者 其中失能和半失能老人将近四千万 并且人口还在以加速度增长 老年人的身体健康成为社会密切关注的问题 大部分的老年人都患
  • JavaScript基本包装类型

    基本包装类型 为了便于操作基本类型值 ECMAScript还提供了3个特殊的引用类型 Boolean Number和String 这些类型与其它引用类型相似 但同时也具有与各自的基本类型相应的特殊行为 实际上 每当读取一个基本类型值的时候
  • ElasticSearch-全文检索-简单使用

    简介 https www elastic co cn what is elasticsearch 全文搜索属于最常见的需求 开源的 Elasticsearch 是目前全文搜索引擎的首选 它可以快速地储存 搜索和分析海量数据 维基百科 Sta
  • 类和对象

    一 类 类描述了一组具有相同属性和行为特征的对象 对象是类的实例 类是一种数据类型 而对象是该类型的变量 在c 语言中 一个类的定义包含数据成员和成员函数两部分内容 数据成员定义该类对象的属性 不同对象的属性值可以不同 成员函数定义了该类对
  • 回归分析及实际案例:预测鲍鱼年龄

    上一篇文章 线性回归 Linear regression 算法 引入 1 线性回归 算法的优点 结果易于理解 计算不复杂 缺点 对非线性数据拟合不好 目标 平方误差和最小 求解 对参数w求导等于0 的回归系数 模型预测 函数说明 标准回归
  • 开发者必备的网站。javascript手册,css手册

    参考手册大全 更多更好的网址请到http www loveboygirl com 在 电脑技术 参考手册 下面 网站开发人员一定喜欢 很多好工具哦 希望大家多多支持 桌面版手册 开源中国 开源中国工具 msdn技术资源库 technet M
  • leptonica依赖的相关库的生成

    leptonica依赖的相关库的生成 写在前面 笔者观摩大量大佬的教程完成的本篇文章 反正我是成功了 电脑Win10 64位 VS2017版本 用到的源码由于试过太多来源 部分已经忘记哪儿来的了 有空我也传份上来 哈哈 至于为此学习过的文章