我在Windows 7 64位上使用Qt Creator构建了一个Qt 5应用程序(使用msvc 2010)。 该应用程序在我的计算机上运行完美,但在其他计算机上无法运行。
我将 Dependency Walker 中显示为缺失的所有.dll复制到程序文件夹中,没有错误,但应用程序不会运行。
我在Windows XP和Windows 7 64和32位上测试过它。
我能做些什么才能找出问题所在?
更新:我安装了Qt 4.8.4(vs 2008)和msvc 2008 express并且我编译了它并且它在其他计算机上运行,具有Qt4的.dll。 也许有人知道Qt5的问题......
答案 0 :(得分:5)
我遇到了同样的问题。
您需要在可执行文件目录中包含包含qwindows.dll和qminimal.dll的“platform”目录。您可以在“plugins”文件夹下找到该目录。
如果你不添加它,你的应用程序似乎会加载然后退出并返回代码0. Dependency walker无法帮助你,因为DLL是延迟加载的。
答案 1 :(得分:3)
我遇到了同样的问题 - 我添加了Dependency Walker报告的所有DLL,但我的程序立即退出,运行时没有出现错误消息。
我将libEGL.dll
添加到程序目录中,现在它正常运行。
我猜测libEGL.dll
是由其他DLL之一动态加载的 - 可能是libGLESv2.dll
,基于所有已知依赖项,它具有最相似的名称(!) - 和动态加载不是Dependency Walker可以检测到的。
答案 2 :(得分:1)
我也遇到了同样的问题,并了解到MinGW GCC 4.7与此this post的Qt 5.0及以上版本不兼容。我采取了与你相同的方法,并切换到Qt Creator 4.8,它有效。
答案 3 :(得分:0)
我也遇到了同样的问题并尝试了两个DLL丢失消息& Dependency Walker,它没有帮助我或我不知道我是否正确使用它。以下方法帮助我解决了(对于给定的场景)。这种方法适用于一些最小的情况。
<强>方案强>
方法(试用套件MinGW 32位和MSVC2012 OpenGL 32位)
运行应用程序时,删除所有复制的DLL文件。
6.1)删除时,windows会显示DLL文件的提示 应用程序(正在使用的文件)使用,因为最初加载了这些DLL。保留这些文件。
6.2)其他DLL文件将按照我们的要求删除。
这不是一种正确的方法,但在某些情况下可能会有所帮助。
注意强>
复制所有DLL时,在获取文件已存在的消息时,请按系统决定将这两个文件保存为不同的名称。如果应用程序不运行,那么我们可以尝试使用这些重命名的文件。
答案 4 :(得分:0)
我认为它必须是一些DLL,您需要将其放置在与可执行文件相同的目录中,甚至可能放在PATH中的目录中。无论哪种方式,我也正在使用Qt5,并且遇到与您相同的问题如果,我没有将它们与我的exe文件放在同一目录中:
当然,您可能没有使用我正在使用的任何Qt库,在这种情况下,您将不需要它们。此外,您可能具有调用不同DLL的不同工具链,但是我认为的想法是相同的,此外,也许您的设置与我的相同。
我在每个这些库的末尾都附加了一个[d]
,因为对于调试版本,它们的末尾都有一个d
,但是对于发行版本,则没有。该部分在您的计算机上可能相同,也可能不同。我相信这是一个设置或一组设置。