为什么我的QT应用程序不工作?

为什么我的QT应用程序不工作?,qt,executable,qt5,Qt,Executable,Qt5,我在Windows7 64位上使用QtCreator(使用MSVC2010)构建了一个Qt5应用程序。 该应用程序在我的计算机上运行良好,但在其他计算机上无法运行 我将Dependency Walker中显示为缺失的所有.dll复制到程序文件夹中,没有错误,但应用程序无法运行 我已经在WindowsXP和Windows7 64位和32位上进行了测试 我能做些什么来找出问题所在 更新:我安装了Qt4.8.4(VS2008)和MSVC2008Express,并编译了它,它在其他计算机上运行,使用了Q

我在Windows7 64位上使用QtCreator(使用MSVC2010)构建了一个Qt5应用程序。 该应用程序在我的计算机上运行良好,但在其他计算机上无法运行

我将Dependency Walker中显示为缺失的所有.dll复制到程序文件夹中,没有错误,但应用程序无法运行

我已经在WindowsXP和Windows7 64位和32位上进行了测试
我能做些什么来找出问题所在

更新:我安装了Qt4.8.4(VS2008)和MSVC2008Express,并编译了它,它在其他计算机上运行,使用了Qt4的.dll。
也许有人知道Qt5有什么问题…

我也经历过同样的问题,从中了解到MinGW GCC 4.7与Qt 5.0及以上版本不兼容。我采用了与您相同的方法,并切换到Qt Creator 4.8,这很有效。

我遇到了相同的问题-我添加了Dependency Walker报告的所有DLL,但我的程序在运行时立即退出,没有错误消息

我在程序目录中添加了
libEGL.dll
,现在它运行正常


我猜想,
libEGL.dll
是由另一个dll动态加载的-可能是
libGLESv2.dll
,因为在所有已知的依赖项中,它具有最相似的名称(!)-并且依赖项Walker无法检测到动态加载。

我也有同样的问题

您需要在可执行目录中包含包含qwindows.dll和qminimal.dll的“平台”目录。您可以在“plugins”文件夹下找到该目录


如果不添加此项,应用程序将显示为加载,然后退出,返回代码为0。Dependency walker无法帮助您,因为DLL是延迟加载的。

我也遇到了同样的问题,并尝试使用两个DLL缺少消息和Dependency walker,但它对我没有帮助,或者我不知道我是否正确使用了它。下面的方法帮助我解决了(对于给定场景)它。这种方法在某些最小情况下有效

场景

  • QT Creator 3.3.2
  • QT 5.4.1(MSVC 2010,32位),Windows 8.1操作系统
  • 未使用动态加载dll
  • 没有使用第三方dll
  • 这是一个QTWidget应用程序
  • 方法(适用于kit MinGW 32位和MSVC2012 OpenGL 32位)

  • 在构建应用程序后获取发布exe。复制并粘贴到我们想要的另一个文件夹(假定为Z:\abc)
  • 转到Qt工具包(MinGW或MSVC)安装文件夹(在我的示例中:Z:\Qt\5.4\mingw491\u 32(或)Z:\Qt\5.4\msvc2012\u opengl)
  • 搜索*.dll
  • 复制所有DLL并将其粘贴到exe文件夹中。即(z:\abc)
  • 运行应用程序(在我的例子中,它正确启动)
  • 运行应用程序时,删除所有复制的DLL文件

    6.1)删除时,windows将提示输入以下DLL文件: 由应用程序(正在使用的文件)使用,因为这些DLL是最初加载的。让那些文件保持原样

    6.2)和其他DLL文件将按照我们的要求删除

  • 关闭应用程序并重新打开它(在我的例子中,它正确启动)
  • 所以这里我们得到了所需的DLL
  • 这不是一种恰当的方式,但在某些情况下可能会有所帮助

    注意


    在复制所有DLL时,当获取文件已存在消息时,根据系统决定以不同的名称保留这两个文件。如果应用程序无法运行,那么我们可以尝试使用这些重命名的文件。

    我认为它必须是某个DLL,您需要将其与可执行文件放在同一目录中,或者甚至可能放在路径中的目录中。无论哪种方式,我也在使用Qt5,如果我不将这些文件放在与exe文件相同的目录中,我会遇到与您相同的问题:

    • vcruntime140[d].dll(MSVC库)
    • ucrtbase[d].dll(另一个MSVC库--我正在使用MSVC/Visual C++)
    • Qt5Widgets[d].dll(qt5库)
    • Qt5Svg[d].dll(另一个qt5库)
    • Qt5PrintSupport[d].dll(另一个Qt 5库)
    • Qt5Gui[d].dll(您猜对了)
    • Qt5Core[d].dll(是的)
    • msvcp150[d].dll(我相信另一个Microsoft可再发行)
    当然,您可能没有使用我正在使用的任何Qt库,在这种情况下,您不需要它们。此外,您可能有一个不同的工具链,需要不同的DLL,但我认为这个想法是相同的,而且您可能有一个与我相同的设置


    我在每个lib的末尾添加了一个
    [d]
    ,因为对于调试版本,它们在末尾有一个
    d
    ,但是对于发布版本,它们没有。该部件在您的机器上可能相同,也可能不同。我相信这是一个或一组设置。

    尝试从命令提示符下运行可执行文件,以便读取错误消息,并将其添加到问题中@给我空行的反地球。没有错误消息…如果您的应用程序处于调试模式,则它不应在其他计算机上工作。即使有必要的DLL。如果是,发布variant@borisbn我的应用程序处于发布模式。。。什么都没有。确保你也复制了必要的插件,也许你有这个问题:为我工作!非常感谢你!!!我也有同样的问题。对我来说,没有必要包括“平台”文件夹和添加mingwm10.dll。我刚刚添加了所有的DLL文件,当我点击我的.exe文件时,错误消息一直给我,然后最后一步是添加libEGL.DLL,然后它就工作了!