使用windeployqt生成的Qt程序无法运行的问题求助
Windows下Qt Creator构建Qt应用时DirectX相关DLL缺失及入口点错误解决方法
问题背景
跨平台Qt Widgets应用在Ubuntu和Mac环境下通过make可正常编译构建,但在Windows系统使用Qt Creator(Qt 6.7.2 MinGW 64位套件)构建后,出现以下问题:
- 执行
windeployqt时提示警告:Warning: Cannot find any version of the dxcompiler.dll and dxil.dll. - 运行生成的exe文件时报错:
the procedure entry point...
解决步骤
1. 替换适配MinGW 64位的DirectX DLL文件
Chocolatey安装的DirectX组件针对MSVC环境,与MinGW编译程序不兼容,需更换为对应版本的DLL:
- 从Windows系统目录
C:\Windows\System32中复制64位版本的dxcompiler.dll和dxil.dll到你的Debug输出目录Z:\redatamguiwindows\build\Desktop_Qt_6_7_2_MinGW_64_bit-Debug - 若系统目录版本不兼容,可安装微软DirectX End-User Runtime,从其安装目录中提取适配64位的对应DLL
2. 修正windeployqt运行环境
你设置的VCINSTALLDIR是MSVC环境变量,会干扰MinGW版本windeployqt的依赖检测,直接执行以下PowerShell命令即可:
cd Z:\redatamguiwindows\build\Desktop_Qt_6_7_2_MinGW_64_bit-Debug & "C:\Qt\6.7.2\mingw_64\bin\windeployqt.exe" redatamguiwindows.exe
3. 检查并修正Qt项目配置
- 确认构建套件(Kit)选择的是Desktop Qt 6.7.2 MinGW 64-bit,而非MSVC套件
- 检查项目
.pro文件,确保包含必要模块:QT += widgets,移除不必要的DirectX相关依赖配置 - 清理旧构建文件:点击Qt Creator菜单栏「构建」→「清理项目」,之后重新构建项目
4. 排查入口点错误根源
procedure entry point错误通常由DLL版本不匹配导致:
- 确保所有复制的DLL为64位版本(避免误复制
C:\Windows\SysWOW64下的32位DLL) - 验证DLL与MinGW编译器版本兼容,若问题仍存在,可尝试从其他兼容的MinGW编译项目中获取对应DLL
内容的提问来源于stack exchange,提问作者pachadotdev
相关产品推荐
相关产品推荐

