12

我在 Windows 7 Ultimate 上使用 Qt 5.0.2 开发了一个简单的应用程序。作为编译器,QtCreator 使用了 MSVC2012_64bit。而且我无法将我的应用程序移动到其他计算机上。这没用。Qt 应用程序需要我找不到的 DLL。依赖资源管理器认为.dll没有找到下面的s。我在哪里可以找到它们?为什么这个问题如此广泛传播?所有人都抱怨他们.exe用Qt开发的不能在其他电脑上工作。 在此处输入图像描述

EDIT1:顺便说一句,当我添加DCOMP.dll从互联网下载时,未找到的 dll 变成现在的 2-3 倍 :)

EDIT2:另请注意,在其他计算机(Windows 7 Home Premium)上,当我双击 exe 文件时,它显示它加载并且没有效果,根本没有错误。

4

4 回答 4

10

这是我需要的 dll 列表,并且我已经复制了该C:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\platforms文件夹:

在此处输入图像描述

就这个,它对我有用。顺便说一句,我将 Windows 7 Ultimate 64x 和 Qt 5.0.2 用于 Qt 的 Windows 32 位(MinGW 4.7、650 MB)包。

编辑:您可能还需要复制 QtCreator 的 .dll,并且您可能需要有一个以qt.conf以下内容命名的文件(从@Renato 答案复制):

[Paths]

Libraries=./platforms
于 2013-04-24T20:58:03.603 回答
8

只需qt.conf使用以下内容将文件添加到您的应用程序目录

[Paths]

Libraries=./platforms

然后将您将在目录 C:\Qt\Qt5.1.1\Tools\QtCreator\bin 中找到的子目录“平台”复制到同一个应用程序目录

就这样。

这解决了,因为 qtcore.dll 是使用 qt 安装的内部路径编译的。(我不知道为什么!)。因为,当应用程序启动时,qtcore 始终会读取 qt.conf,“平台”中的库将被包含在内,并且该应用程序可以在任何主机上运行。

警告:qtcore 和平台子目录必须来自同一个 qt 安装。

对不起英语,但解决方案工作正常。

于 2013-09-08T13:35:00.077 回答
3

现在的 Qt(至少从 Qt 5.2 开始,如果不是更早的话)附带“windeployqt.exe”,当指向您编译的程序时(并且,如果像我一样使用它们,作为“-- qmldir path/to/QML/files" 对于 Qt Quick 程序)应该将所有必需的 DLL 输出到与您的编译程序当前所在的目录相同的目录中。因此,例如,对于我自己在本地构建机器上,我运行了以下内容:

    windeployqt --qmldir C:\Code\AppSource C:\Code\build-msvc2010\release

这是使用 Qt 5.5 在我的 $PATH 中的 Qt \bin 目录(或者,我猜在 Windows 用语中,%PATH% ;))使用 Qt 5.5,尽管我在 5.2 和 5.3 中也做了同样的事情。

IIRC,如果使用 MSVC 作为编译器,我仍然需要手动复制这些 DLL(在我的情况下是 msvc2010,因此是 msvcp100.dll 和 msvcr100.dll),但我可能记错了。

于 2015-09-23T01:17:10.210 回答
0

感谢各位的帮助!

对我来说,只是以某种方式添加qwindows.dll/platforms目录并没有削减它。
通过直接将整个插件目录复制到我的应用程序的二进制目录并创建一个qt.conf包含以下内容的文件,我终于让一切正常工作:

[Paths]
Plugins=./plugins
于 2013-12-28T21:10:43.593 回答