用qt windeployqt 发布指令执行到qt_ar.qm拒绝访问

第一次用qt windeployqt 发布指令总是执行到一般拒绝访问 ,qt本地运行没一点问题,但就是发布不了,网上搜不到答案,我是第一次学习qt的学生,不知道问题到底出在哪里,求C++ 开发者指导一下,我的环境时win11 amd芯片 Qt_6_5_0_MinGW_64_bit-Release,也是用它下的bin里的windeployqt指令发布的。

img

img

报的错是:无法定位程序输入点 SystemParametersInfoForDpi

感谢大家帮忙参与回答,自己给自己完结了,因为上面五个回答都不对(其中大部分引用chat-Gpt),我也重装过qt,配置过环境,确认过权限,也问过GPT排查,最终通过QT论坛确认,我用的是最新版的QT6.5bete ,这个问题有人提过issues ,也在QT论坛发过帖,具体地址如下:

https://forum.qt.io/topic/144238/windeployqt-qt-6-5-failed-translation-not-found/4   以及   https://bugreports.qt.io/browse/QTBUG-112204  

,切换更低的QT版本就不再出现这个错误。

引用chatGPT作答,您好!这个问题可能是因为您的系统缺少一些必要的 DLL 文件,或者您的程序缺少一些依赖项。下面是一些可能的解决方案:

1.检查您的程序是否有依赖项,您可以使用 Dependency Walker 工具来检查。如果缺少一些 DLL 文件,您需要将它们添加到您的系统路径中。

2.检查您的系统路径是否正确设置。您可以打开控制面板 -> 系统 -> 高级系统设置 -> 环境变量,确保系统路径包含了 Qt 和 MinGW 的路径。

3.您可以尝试重新安装 Qt,并确保您选择了正确的选项。例如,如果您使用的是 MinGW 编译器,则应该选择安装 MinGW 版本的 Qt。

4.您可以尝试手动复制缺少的 DLL 文件到您的应用程序的文件夹中,或者将它们添加到系统路径中。您可以使用 Process Monitor 工具来查看应用程序在运行时使用的 DLL 文件。

5.如果上述解决方案都无法解决问题,您可以尝试使用其它的发行工具来发布您的应用程序,例如 NSIS 或者 Inno Setup。

希望这些解决方案可以帮助您解决问题。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个问题看起来像是缺少一些系统组件或者是程序执行权限不够所导致的。

首先,你可以尝试在管理员权限下进行操作,看看是否能够解决问题。

如果还是没有成功,那么可以考虑缺失系统组件。一个可能的解决方法是安装 Visual C++ Redistributable for Visual Studio,并在安装时选择与你的系统和处理器架构相匹配的版本。你可以在 Microsoft 官网上找到这个软件的下载链接。

如果问题还是没有解决,可以尝试手动拷贝缺失的文件到项目文件夹的依赖项目录中。具体步骤为:

  1. 打开 Qt Creator,在“项目”视图中右键点击你的项目,选择“打开项目文件夹”。

  2. 在弹出的文件夹窗口中找到“release”文件夹,然后找到名为“qt_ar.qm”的文件所在的路径。

  3. 将“qt_ar.qm”文件复制到“release”文件夹中的“bin”目录中。

  4. 再次运行 windeployqt 命令,看看是否能够成功发布应用程序。

希望这些方法能够帮助你解决问题。如果还是不行,可以贴出 windeployqt 命令的具体参数和你的程序目录结构,这样我们可以更好地理解问题出现的具体情况以便提供更准确的帮助。
如果我的回答解决了您的问题,请采纳!

可能是在执行windeployqt命令的过程中出现了一些权限问题,导致无法访问某些文件或目录。
解决方案:
1.尝试以管理员身份运行命令提示符或终端窗口,然后再执行windeployqt命令。
2.检查windeployqt命令的参数是否正确,确保指定的目标路径是正确的并且有足够的写权限。例如,您可以将命令指向一个自己创建的目录,确保该目录具有足够的权限。
3.检查您的编译环境是否正确安装。例如,您可能需要安装某些必要的库文件,或者需要将某些库文件添加到PATH环境变量中。
尝试在Qt Creator中使用Qt自带的发布向导发布您的应用程序,这个工具会自动为您生成所需的库文件和依赖项。

如果以上方法均不起作用,请尝试重装Qt的MinGW版本,并确保使用的是与您的操作系统相兼容的版本。

尝试在c盘以外的盘符创建一个英文路径的目录,将编译生成的xxx.exe复制到该目录,然后在该目录进入cmd,在命令行窗口输入windeployqt xxx.exe