.dll
文件未找到。我该在哪里找到它们?为什么这个问题如此普遍?许多人抱怨无法使他们使用Qt开发的.exe
文件在其他计算机上运行。
编辑1: 顺便说一下,当我从互联网下载并添加了DCOMP.dll
时,未找到的DLL文件数量增加了2-3倍 :)
编辑2: 另请注意,在其他计算机上(Windows 7 Home Premium),当我双击exe文件时,它会显示正在加载但没有效果,没有错误,什么都没有。.dll
文件未找到。我该在哪里找到它们?为什么这个问题如此普遍?许多人抱怨无法使他们使用Qt开发的.exe
文件在其他计算机上运行。
编辑1: 顺便说一下,当我从互联网下载并添加了DCOMP.dll
时,未找到的DLL文件数量增加了2-3倍 :)
编辑2: 另请注意,在其他计算机上(Windows 7 Home Premium),当我双击exe文件时,它会显示正在加载但没有效果,没有错误,什么都没有。这是我所需的dll列表,同时我已复制了 C:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\platforms
文件夹:
只需要这些,它对我有效。顺便说一下,我使用的是 Windows 7 Ultimate 64x 和 Qt 5.0.2 for Windows 32-bit (MinGW 4.7, 650 MB) 包。
编辑:您可能还需要复制 QtCreator 的 .dll文件,并且您可能需要拥有一个名为 qt.conf
的文件,其中包含以下内容(从 @Renato的答案中复制):
[Paths]
Libraries=./platforms
qt.conf
添加到您的应用程序目录中,并具有以下内容。[Paths]
Libraries=./platforms
然后将"platforms"子目录复制到相同的应用程序目录中,该子目录可以在目录C:\Qt\Qt5.1.1\Tools\QtCreator\bin中找到。
就这样。
这是因为qtcore.dll使用了您的qt安装的内部路径进行编译。(我不知道为什么!)自从qt.conf在应用程序启动时qtcore总是会读取它,"platforms"库也将被包含,并且在任何主机上应用程序都能正常工作。
警告:qtcore和platforms子目录必须来自同一qt安装。
抱歉我的英语不好,但解决方案很有效。
最近Qt(至少从Qt 5.2开始)附带了“windeployqt.exe”,当指向编译后的程序时(如果你和我一样使用了QML文件,则需添加额外的参数“--qmldir path/to/QML/files”用于Qt Quick程序),应该会将所有必需的DLL文件输出到与编译后的程序相同的目录中。例如,对于本地构建机器的个人而言,我执行了以下类似的操作:
windeployqt --qmldir C:\Code\AppSource C:\Code\build-msvc2010\release
windeployqt
无法生成vcredist_x86.exe或vcredist_x64.exe文件! - SuB感谢大家的帮助!
对我来说,仅仅将qwindows.dll
添加到/platforms
目录中并不够。
最终,我通过直接复制整个plugins目录到我的应用程序二进制目录,并创建一个包含以下内容的qt.conf
文件来使一切正常运行:
[Paths]
Plugins=./plugins
'rundll32.exe': Loaded 'C:\Windows\System32\dwmapi.dll', Cannot find or open the PDB file
。 - sashoalm