前言
经过大半天的折腾,终于将所需要的exe弄出来了。
期间查阅了大量资料,发现大多是简单的一个示例。。
只有一位博主简单说明了一下 带图片资源的操作方式
目的
在其他未配置过环境的window电脑上直接运行我们所写程序
环境与软件
Qt creator 5.11.1 mingw 32 bit
openCV库
kienct 库
Dependency Walker (查询程序所用库的软件) 下载传送门
Enigma Virtual Box(打包整个exe的软件) 下载传送门
初步生成.exe
(1)以release形式编译代码
(2)在你项目放置同级目录下会生成对应的buildXXXXX文件-》release文件夹-xxx.exe
自动拷贝所需dll
(1)将该exe单独放置在一个文件夹
(2)window搜索框搜索并调用出QT的mingw命令行,使用windeployqt命令
(3)执行以下命令
1 | # cd 你所放exe的文件路径 |
添加缺失的dll(动态链接库)
此时你可以直接运行该exe文件,但是当你移植到其他电脑时可能会出现库缺失的现象。这可能时因为所使用的第三方库如openCV并没有同步添加进来。
(2)运行并打开xxx.exe
(3)检查缺失dll
对比depens所罗列的dll文件与上一步自动拷贝的dll,找出所缺库。这里可以看到openCV kinect的dll根本没有
(4)添加缺失dll
full path 可以看到exe所用dll的路径
根据所给路径,将所缺dll复制到所含exe文件夹中
小小坑:感觉应该全部找到了,但是在实际运行中Qt5Test.dll Qt5OpenGL.dll也缺失了,该软件也没有提示…
小小理解:有些系统dll文件引用过来全是64位(如:user32.dll),而mingw编译完是32位的,似乎该软件也提示不兼容。但是我觉得既然在我们的系统上可以运行,就说明没什么太大影响。于是这些dll我选择忽略
图片就位
图片文件夹与exe放置在同一目录下
程序修改对应路径
1 | //在mainwindow.h中声明变量,最好是全局变量啦, |
在此插一个小知识点
QString 字符串拼接
类型转换
QString转整型、字符串
eg:
1 | frameBGRPath.toStdString(); |
整型转QString
eg:
1 | int collectNumber = 1; |