【问题标题】:32-bit Qt application on win 7 x64 won't run, but runs fine from Qt Creator?win 7 x64 上的 32 位 Qt 应用程序无法运行,但在 Qt Creator 中运行良好?
【发布时间】:2012-08-19 09:51:45
【问题描述】:

我的开发箱是 Windows 7 x64。我在我的盒子上构建了 32 位和 64 位版本的 Qt 4.7.4。当我将我的应用程序配置为使用 32 位版本的 Qt 时,它在 Qt Creator (ctrl-R) 中运行良好,但是当我尝试在 Windows 资源管理器中双击 exe(或从 cmd 提示符运行)时,我得到:

-------------------------- RenameTemplatePreviewFiles_Qt_win.exe - 应用程序错误 -------------------------- 应用程序无法正确启动 (0xc000007b)。 单击确定关闭应用程序。 -------------------------- 好的 --------------------------

如果我将我的配置切换到 64 位 Qt 并构建它,我可以双击 exe 并且它运行良好。

我需要做什么才能运行使用 32 位 Qt 编译的 exe?

【问题讨论】:

  • 你是动态链接还是静态链接 Qt?
  • 我不确定 - 我怎么知道?
  • 如果您使用默认配置,因此您正在动态链接 Qt(请检查链接器命令以确保)。如果链接是动态的,那么应用程序将在应用程序附近搜索 Qt dll,然后在 PATH 中搜索。如果链接是静态的,Qt 嵌入在您的应用程序中。在你的情况下,我猜它是动态的,PATH 中不存在 32 位 Qt dll。尝试将 QtCore4.dll 复制到您的应用程序文件夹中并参考 Bart 答案以查找所有 Qt 依赖项

标签: qt qt4 32bit-64bit qt4.7


【解决方案1】:

我有根据的猜测是您的应用程序根本找不到所需的 DLL。可以肯定的是,您可以在Dependency Walker 中打开您的 exe,看看它是否找到了所有必要的 DLL。如果一开始似乎没有任何问题,那么使用 Dependency Walker 来分析应用程序。这可能会揭示一些在运行时加载的缺失依赖项。

如果这与您的 Qt DLL 相关,请确保您的 PATH 环境变量中有适当的条目,或者所需的 DLL 包含在您的 EXE 目录中(尽管后者可能不是开发的最佳选择机器)。

【讨论】:

  • 是的,我的路径中只有 x64 版本的 Qt。但是,如果我查看 Qt Creator - 项目、构建设置、构建环境,x86 版本的 Qt 在我的路径中。它设置为使用系统环境,但显然它会自动将 x86 版本的 Qt 添加到路径中。
  • @DavidBurson 是的,很可能是这样。很高兴看到问题解决了。
【解决方案2】:

我也遇到过同样的问题。首先,我在我的 .exe 文件所在的发布文件夹中复制了所需的 .dll 文件。然后我复制了额外的 libstdc++-6.dll 文件。程序在此之后开始工作。

【讨论】:

  • 非常感谢你救了我!
【解决方案3】:

只需添加三个缺失的dll文件:

  • libwinpthread-1.dll
  • libstdc++-6.dll
  • libgcc_s_dw2-1.dll

到 appl.exe 的文件夹。 对于我的系统,这将进入目录C:\Users\H\Documents\build-AQtest01v4-Desktop_Qt_5_11_0_MSVC2017_64bit-Debug。 复制这些库应该可以使您的应用程序正常工作。在我的系统上,这些 dll 可以在 C:\Qt\Tools\mingw492_32\bin 中找到。

【讨论】:

    【解决方案4】:

    我确实遇到了同样的问题,想分享我的解决方案。

    当我尝试部署 32 位版本时,运行 windeployqt.exe 复制了 32 位可执行文件的错误文件,因为 PATH 设置为 64 位 bin 文件夹 (D:\Qt\Qt5.14.2\ 5.14.2\msvc2017_64\bin)。

    当我将 PATH 设置为 32 位文件夹 (D:\Qt\Qt5.14.2\5.14.2\msvc2017\bin) 并再次运行 windeployqt.exe 时,复制了正确的文件以进行部署,一切正常。

    加里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-02
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      相关资源
      最近更新 更多