Qt笔记(十四)Qt程序依赖库
利用windeployqt.exe解决,windeployqt.exe的位置在qt的vs插件的bin目录下。
原因:
采用qt开发windows桌面程序,由于qt已经安装在了系统路径下,所以在开发的机器上是不会出现找不到依赖库问题的。但是,当我们打包之后,放到客户机上,客户是肯定不会为了用你的程序,去安装一个完整的qt,而且版本还需要和你开发时候使用的一模一样。所以,就需要我们在打包时,把依赖的所有qt库放在.exe可执行程序同级目录下。
此时也会出现一个问题,不知道自己的程序到底依赖了哪些qt库。如果是开发经验很足的朋友,可以快速根据自己代码中使用到的qt功能,找到依赖的dll。比如说qtcore qtwidgets qtopengl qwindows等。但是,一些经验不足的同学,可能就需要采用最笨的方法,找一台没有安装过qt的空白机器,然后跑自己的应用程序,每跑一次,出错一次,记录一下缺少哪些库,然后一个一个拷贝进来。这样也可以完成,但是太麻烦了。
qt开发者已经为我们想到了这个问题的终极解决方案。
采用windeployqt.exe解决。
PS D:\Qt\5.15.2\msvc2019_64\bin> .\windeployqt.exe E:/GitHub5/build/QtVTKTutorial/RelWithDebInfo/QtVTKProject.exe
E:\GitHub5\build\QtVTKTutorial\RelWithDebInfo\QtVTKProject.exe 64 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Direct dependencies: Qt5Core Qt5Widgets
All dependencies : Qt5Core Qt5Gui Qt5Widgets
To be deployed : Qt5Core Qt5Gui Qt5Svg Qt5Widgets
Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.
Qt5Core.dll is up to date.
Updating Qt5Gui.dll.
Updating Qt5Svg.dll.
Qt5Widgets.dll is up to date.
Updating libGLESv2.dll.
Updating libEGL.dll.
Updating D3Dcompiler_47.dll.
Updating opengl32sw.dll.
Creating directory E:/GitHub5/build/QtVTKTutorial/RelWithDebInfo/iconengines.
Updating qsvgicon.dll.
Creating directory E:/GitHub5/build/QtVTKTutorial/RelWithDebInfo/imageformats.
Updating qgif.dll.
Updating qicns.dll.
Updating qico.dll.
Updating qjpeg.dll.
Updating qsvg.dll.
Updating qtga.dll.
Updating qtiff.dll.
Updating qwbmp.dll.
Updating qwebp.dll.
Creating directory E:/GitHub5/build/QtVTKTutorial/RelWithDebInfo/platforms.
Updating qwindows.dll.
Creating directory E:/GitHub5/build/QtVTKTutorial/RelWithDebInfo/styles.
Updating qwindowsvistastyle.dll.
Creating E:\GitHub5\build\QtVTKTutorial\RelWithDebInfo\translations...
Creating qt_ar.qm...
Creating qt_bg.qm...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_da.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_es.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_gd.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_tr.qm...
Creating qt_uk.qm...
Creating qt_zh_TW.qm...
PS D:\Qt\5.15.2\msvc2019_64\bin>
这样程序就自动把qt依赖库拷贝到exe所在目录下了。