时间:2019年7月22日09:34:38
在使用Qt编译程序并进行release编译后,当您点击生成的.exe文件时,可能会提示缺少许多.dll文件。有人建议在网上找到所缺的文件并手动添加,但我这里使用了Qt自带的一个批处理软件windeployqt.exe来解决这个问题。具体方法如下:
- 将您编译的release版本的.exe文件复制到一个文件夹中。
- 运行windeployqt.exe,它会自动找到并添加所需的库文件。
请注意,在命令行窗口中运行windeployqt.exe时需要注意路径问题。直接输入该命令可能会报错,因为系统找不到该程序。为了解决这个问题,有两种方法可以运行它。请注意以下步骤:
- 您可以在终端中指定windeployqt.exe的位置进行运行。但是需要注意的是,windeployqt.exe会找到的.dll文件可能无法正常运行。即使您双击.exe程序,仍然可能会出现错误提示。如下图所示:
[图片:错误提示截图]
- 为了解决这个问题,您可以手动搜索Qt的安装路径,找到所缺的.dll文件。一旦找到了所需的.dll和库文件,您可能会认为问题已经解决了。然而,当您再次双击运行程序时,仍然可能会出现错误提示0x0000007b。这让人感到困惑。
经过一段时间的研究,我发现了一些资料,其中提到编译器的差异可能是问题的原因。我检查了我的编译器,发现没有问题。然后我想到一个突发奇想的方法,尝试在windeployqt.exe的路径下运行它,看看是否有效(我有点绝望了,因为网上也有其他人遇到了同样的问题,但是解决方法都是胡扯)。
我重新打开命令行窗口cmd,并指定编译生成的.exe文件的路径,让windeployqt.exe再次为我找到所需的文件。这次不是通过window+r运行,而是通过以下步骤:
-
点击运行后,命令行窗口直接进入了该目录。您可以使用dir命令查看该目录下的文件。我们的windeployqt.exe位于bin目录下,所以还需要切换到该目录。输入命令cd bin即可切换。
-
清空文件夹中的内容,只保留您的.exe文件。然后在命令行中指定您的.exe文件的位置,如下所示:
[图片:命令行截图]
-
然后查看找到的各种库和.dll文件。
-
再次尝试双击运行程序,这次应该可以成功运行了。
至此,问题基本解决了。但是我仍在思考这个问题,因为它非常奇怪。按理说,使用指定windeployqt.exe和后面的方法找到的文件应该是一样的,但为什么结果不一样呢?如果有人知道原因,请在下面留言(嘿嘿)。