第一个vs2015+qt5小工具开发的心路历程
需求:开关门检测项目中,需要一个相机标定工具,方便实施人员现场安装部署开关门检测算法。
开发工具:vs2015+qt5
1. vs2015 + qt5安装过程
(1)在vs2015 工具->扩展和更新->联机,搜索qt package
点击安装。安装完成后后续还需要做一些配置,这个具体百度吧,我记不清了,反正安装完成后在vs2015界面上会有对应图标:
(2)安装qt-opensource-windows-x86-msvc2015-5.7.0.exe
注意到qt这个东西在windows下只有X86版本的,没有x64版本的。所以后面在开发软件的时候应该只可以开发x86版本的应用程序。
2. 第一个小工具的开发过程
具体的开发过程这里就不再详细讲述了,因为都是一些工程代码的细节,最后的功能框架如下图所示吧:
3. 下面重点说一下部署问题
(1)将编译好的exe放到一个单独目录下,使用windeployqt将缺失的东西都补上。
(2)缺失各种dll。将缺失的对应dll都放到exe所在目录下。可以使用depends walker进行dll缺失检查。
(3)补上缺失的dll后放到别的电脑上仍报错。使用depends walker进行检查,发现是dll版本不匹配的原因,比如我编译的是x86版本的,但是补充的dll使用的是x64版本的,导致出错。版本问题可以使用depends walker进行检查,在“cpu”下可以看到是什么版本的。将dll版本对应起来就可以了。
(4)解决以上问题后,可以顺利打开qt界面了。但是又出现了新问题:运行报错xcb000007的错误。实在没法检查,因为本地运行没问题的。同事建议进行vs远程调试(remote debug方法百度之)。调试后发现存在的问题是opencv的VideoCapture类定义的读图对象获取不到图像,导致接下来的resize出错。感谢https://blog.csdn.net/mmly541/article/details/85161208提供的方法,将opencv安装目录…\x64\vc14\bin中的opencv_ffmpegXXXXX.dll复制到项目的.exe所在的文件中,问题得到解决。