简介
- ui_xxx.h文件 setup(ui)
- 继承 QMainWindow或者QWidget,用代码写。不要忘了初始化对象的时候加上this
- 主函数初始化,show,return,显示框框。开始监听Qtimer,Qthread等等。
技巧
每次更改平台X86到X64的时候,更改一下输出目录中间目录。然后重新生成,如果报链接到debug或者非平台的错,把工程里面的 Generated Files 全部移除即可。
VS中Qt报错
报link错:
查看链接器->输入->附加依赖项
是否正确,是否包含了d(debug)等
莫名其妙的错
将文件移除,再添加进来。值得注意的是,有的时候需要先点击清除
,然后执行qmake
,然后重新编译。要不然也会碰到模型奇妙的问题。
Qt creater中报错
C1902
报错内容如下
1 | fatal error C1902: 程序数据库管理器不匹配;请检查安装 |
解决方法:
以VS2015为例,将C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
中的mspdbsrv.exe
、mspdbcore.dll
和mspdb140.dll
文件与目录C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
下的保持一致。那边缺少,将另外一边的复制过去。若都有,但是不一致,一般教程都以C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
为基准,复制到另外一个文件夹。
qwt库
因为编译库的时候会指定放库的目录,所以必须把qwt-6.1.3
文件夹路径为C:\Qt\qwt-6.1.3
matlab runtime
如果直接迁移别人的matlab库放在自己电脑中运行的时候,注意,安装MCR的版本要与之前编译出库的matlab编译器版本一致。也就是说,若该库是在matlab2015上编译的,那么在自己电脑上要安装matlab2015对应的MCR库。
MRC库安装完毕后,在系统环境变量天剑环境变量。名字为MCR
,值为C:\Program Files\MATLAB\MATLAB Runtime\v85\runtime\win64
。
如下图所示:
Qt程序打包
在Qt creator构建出release版本,例如构建出的文件夹为build-Mul_Thread-Desktop_Qt_5_8_0_MSVC2015_64bit-Release
。构建出的目录内容如下:
1 | ├─data |
里面的可执行文件为release\Mul_Thread.exe
,所需要的dll文件放在release
下,权重和图片文件放在tiny
文件夹下,所需要的掩模和参数文件放在data
文件夹。
新建一个文件夹为Mul_Thread
,将release\Mul_Thread.exe
放到该文件夹中,打开windows开始菜单,找到Qt 5.8.0->Qt 5.8 64-bit for Desktop (MSVC 2015)
,如下图所示
打开Qt 5.8 64-bit for Desktop (MSVC 2015)
,切换路径到Mul_Thread
文件夹。这里我的该文件夹的路径为E:\ing\darknet_yolo_windows_qt\Mul_Thread
,切换指令为cd /d E:\ing\darknet_yolo_windows_qt\Mul_Thread
。接着输入指令windeployqt Mul_Thread.exe
,Qt会自动将你程序所需的dll文件移动到该目录。如下图所示:
执行完此命令后,可以看到Mul_Thread
文件夹内容如下:
接着将build-Mul_Thread-Desktop_Qt_5_8_0_MSVC2015_64bit-Release\release
下运行Mul_Thread.exe
所需的dll依赖放置到Mul_Thread
文件夹根目录;将build-Mul_Thread-Desktop_Qt_5_8_0_MSVC2015_64bit-Release
下的data
和tiny
文件夹放置到Mul_Thread
文件夹根目录。此时就可以双击Mul_Thread\Mul_Thread.exe
,即可运行。拷贝该文件到其余电脑也可运行。
值得注意的是,若你的程序需要特殊的运行环境,拷贝打包好的文件夹到别的电脑上,也是需要这些特殊的运行环境的。例如我的这个程序运行需要
CUDA8.0、CUDNN
环境,则若电脑无该环境,打包好的程序也是无法运行的。
另外,若已经打包完毕,想要更改程序,只需要更改Qt程序,然后使用Qt creator编译代码,产生新的Mul_Thread.exe
,拷贝到Mul_Thread
文件夹即可。