使用windeployqt在构建后事件复制Qt DLL失败求助
解决windeployqt错误指向默认Qt路径的问题
你的问题很典型——源码编译Qt时如果没正确指定安装前缀,windeployqt这类工具就会硬编码去默认的C:\Qt路径找配置文件和依赖,完全忽略你实际的自定义安装目录。下面是几个一步步的解决办法,从彻底修复到快速临时解决都有:
方法1:重新编译Qt并指定正确前缀(最彻底)
这能从根源上解决路径错误的问题,确保所有Qt工具都默认指向你的自定义目录:
- 打开VS2015 x64的开发命令提示符,进入Qt源码所在的目录
- 执行configure命令时,务必加上
-prefix参数指定你的实际安装路径,示例命令(根据你之前的编译参数调整其他选项):configure -prefix C:\Libraries\Qt\5.12.6\VS2015\shared\x64 -debug-and-release -opensource -platform win32-msvc2015 -x64 - 接着执行
nmake完成编译,再执行nmake install将编译好的库和工具安装到你指定的前缀路径下。完成后,windeployqt就会自动使用这个正确路径,不会再找默认的C:\Qt了。
方法2:手动修改Qt配置文件(无需重编译)
如果不想重新编译,可以直接修正Qt配置文件里的错误路径:
- 找到你的Qt目录下的配置文件:
C:\Libraries\Qt\5.12.6\VS2015\shared\x64\mkspecs\qconfig.pri - 用文本编辑器打开它,搜索所有包含
C:\Qt\5.12.6\install\win32-msvc2015\x64的字符串,全部替换成你的实际Qt路径C:\Libraries\Qt\5.12.6\VS2015\shared\x64 - 保存文件后,重新运行windeployqt命令即可。
方法3:运行windeployqt时强制指定Qt路径(快速临时解决)
windeployqt支持通过--qtpath参数直接指定Qt根目录,你可以修改VS的构建后事件命令为:
cd "$(QTDIR)\bin\" && windeployqt --qtpath "$(QTDIR)" "$(OutDir)$(TargetName)$(TargetExt)"
或者在命令提示符中直接执行:
cd "C:\Libraries\Qt\5.12.6\VS2015\shared\x64\bin\" && windeployqt --qtpath "C:\Libraries\Qt\5.12.6\VS2015\shared\x64" "C:\PathToSoftware\TestSoftware.exe"
这个参数会强制windeployqt使用你指定的路径,跳过配置文件里的错误路径。
方法4:检查并修正环境变量
确保系统或VS环境中的环境变量指向正确路径:
- 打开系统环境变量设置:
- 添加或修改
QTDIR为C:\Libraries\Qt\5.12.6\VS2015\shared\x64 - 将
C:\Libraries\Qt\5.12.6\VS2015\shared\x64\bin添加到PATH环境变量的最前面(确保优先使用这个路径下的Qt工具)
- 添加或修改
- 重启Visual Studio和命令提示符,再运行windeployqt命令验证是否解决问题。
内容的提问来源于stack exchange,提问作者Michael




