最近在做一个Qt插件式框架的软件,在完成代码编写和测试后准备打包发布,发现打包后无法正常加载插件,在网上搜素半天发现是插件依赖缺失。
众所周知,如果想打包QT生成的exe,使用对应版本的windeployqt 即可,但通过windeployqt my.exe打包出来的软件是不能正常加载插件的,因为如果你的插件使用了比如说Qt的图形库,或者第三方库的话,必须包含这些库的依赖才能正常运行。
于是我尝试使用windeployqt对插件进行打包,发现还是不行。经过不断尝试发现,需要在使用Windeployqt命令时,同时包含程序和插件,如下:
Windeployqt my.exe .\plugin\myplugin1.dll .\plugin\myplugin2.dll
新建一个文件夹,把编译输出路劲下的exe和自己编写的插件dll复制到新文件夹下,为了方便我创了一个plugin文件夹专门存放插件,结构如下
使用对应版本的windeployqt 进入当前目录,然后输入
windeployqt UtBox.exe .\plugin\CodeBook.dll .\plugin\Unzip.dll
结果:
这样打包软件和插件才能都正常运行。