将VS2017中写好的程序打包生成.exe文件,在其他没有任何相关软件的电脑上运行发布,其中程序所用到Qt、OpenCV、Tesseract,将所用到的资源文件和静态链接库进行打包,最后移植到另一台电脑上。
由于是发布模式,编译程序时,选择Release版本。
使用发布运行库和静态链接:多线程(/MT)。
配置步骤:
项目 -> C/C++ -> 代码生成 -> 运行库 -> 多线程(/MT)
编译后,生成.exe文件。文件所在目录为你的工程文件下的x64/Release.
(1)首先用到Qt自带的工具——windeployqt.
该工具一般位于Qt安装目录下。例如我的目录为:G:\Qt\Qt5.12.3\5.12.3\msvc2017_64\bin.
(2)打开命令提示符cmd,进入你要发布的程序的所在目录。例如我的目录为:F:\Wor\1号工位\2.0\QWORK3\x64\Release.
(3)输入“windeployqt QWORK3.exe”命令,其中QWORK3是工程名称。
(4)完成后,Qt将自动复制它所依赖的dll文件、qm文件和各个插件文件,此时打开你要发布的程序的目录即可看到。
以上仅打包了与Qt相关的库,还有VS和OpenCV的库,此时可以借助工具“Depends”查看dll动态链文件。
(1)下载“Dependency Walker”.
(2)打开要发布的程序,即可查看所包含的库。
由于tesseract-orc包含语言库,不能仅通过上面添加dll文件的方式,要想实现字符识别的功能,必须在要发布的电脑上安装和配置tesseract.
tesseract可在GitHub上下载:https://github.com/UB-Mannheim/tesseract/wiki
(这是目前最新版的,可以根据自身需求选择下载版本)
下载好后,双击.exe安装程序。
(安装步骤简单,一路选择Next,这里不再赘述)
选择语言包,可根据工程需要识别的语言进行选择。
打开Additional language data(download)选项,勾选自己需要的语言包。我这里只选择了简体中文。
安装完成后,将安装路径添加到系统环境变量Path中。
例如我的路径为:G:\Tesseract-OCR.
新建一个系统变量TESSDATA_PREFIX,变量值为:G:\Tesseract-OCR\tessdata.
此目录是存放tesseract-ocr 语言包文件。
打开命令提示符cmd,输入“tesseract -v”命令,输出版本信息即代表安装成功。
用一张数字图像进行试验。
打开命令提示符cmd,输入“tesseract 1.jpg a -l eng”命令。
这里的1.jpg是图片名称,a为生成的识别文件.txt,-l为英文字母L,而不是数字1.
注意:要进入识别图片的路径!(这里我把图片存在了桌面上)
完成以上配置后,如在其他电脑上运行.exe出现报错,说缺少某些dll文件,即可手动添加到打包的工程文件下。
以上的配置已经完成了大部分的资源文件和相关依赖库的打包,剩下的一些可能是由于系统或者版本的原因,所需要添加的库也很少了,可以自行手动添加。