【问题标题】:Exe file does not run without QtCreator没有 QtCreator,Exe 文件无法运行
【发布时间】:2025-12-13 04:15:01
【问题描述】:

我安装了 Qt 5.0.1 for Windows 32 位(MinGW 4.7,823 MB)

然后我创建了简单的 Quick 2 应用程序并对其进行了编译。应用程序位于其文件夹中,应用程序从 QtCreator 运行。我想在没有 QtCreator 的情况下运行这个 exe 文件。为此,我从 C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin:

复制文件
  1. Qt5Core.dll
  2. icuin49.dll
  3. libgcc_s_sjlj-1.dll
  4. libwinpthread-1.dll
  5. libGLESv2.dll
  6. libstdc++-6.dll
  7. qminimal.dll
  8. Qt5Gui.dll
  9. Qt5Network.dll
  10. Qt5Qml.dll
  11. Qt5Quick.dll
  12. Qt5V8.dll
  13. qwindows.dll

然后我得到错误:

Точка входа в процедуру _ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode не найдена в библиотеке DLL icuuc49.dll

翻译:

在库 DLL icuuc49.dll 中找不到过程入口点 _ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode

如果我将 exe 文件复制到文件夹 C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin(所有 dll 都在哪里),程序运行,但没有显示.

如果我将exe文件复制到文件夹C:\Qt\Qt5.0.1\Tools\QtCreator\bin(所有的dll都在哪里),程序不会运行。

怎么办?程序运行在哪里和哪些库?

已解决。来自C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin的库的最终列表:

  1. icuin49.dll
  2. icuuc49.dll
  3. libEGL.dll
  4. libgcc_s_sjlj-1.dll
  5. libGLESv2.dll
  6. libstdc++-6.dll
  7. libwinpthread-1.dll
  8. Qt5Core.dll
  9. Qt5Gui.dll
  10. Qt5Network.dll
  11. Qt5Qml.dll
  12. Qt5Quick.dll
  13. Qt5V8.dll

我忘了添加带有 qml 文件的文件夹。

【问题讨论】:

  • 天哪。明天的计算机科学考试,我想我永远不会完成它,这要归功于这个该死的问题。解决了!我感激不尽!!!!!!
  • 此问题在以下链接中得到解决。 *.com/questions/17058342/…

标签: qt qml qt5 qt-quick qtquick2


【解决方案1】:

将您的可执行文件放在一个中立的目录中,就像您的桌面上新创建的一样。然后运行dependency walker。它将向您显示缺少的库列表。首先Qt5Core.dlllibgcc_s_sjlj-1.dll 和您指定的将是缺失的一个。你必须在你的系统上找到它们,并一一复制到这个目录。大部分缺失将在您指定的目录中 (C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin)。如果您找不到其他人,请使用列表编辑问题。

注意:

一般情况下丢失文件的类型:

  • Qt 库。如果 Qt 被编译为静态,它们不应该出现
  • Qt 依赖的其他库:例如 OpenSSL。如果 Qt 和这个库都是静态的,则不会出现
  • 编译器库:例如,用于 OP 的 gcc libgcc_s_sjlj。它们通常是动态的,如果它们不在库搜索路径中,则需要复制它们。

【讨论】:

  • 我更新了使用 dll 的列表,但程序运行时出现问题。 Dependency walker 显示我描述的错误:_ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode 当我从 C:\Qt\Qt5.0.1\5.0.1\mingw47_32\binC:\Qt\ 复制所有 dll 时Qt5.0.1\5.0.1\mingw47_32\plugins\platforms 程序运行,但没有显示。
  • 非常感谢! Dependency walker 帮助找到了 dll。我忘了添加带有 qml 文件的文件夹。最终的库列表:icuin49.dll、icuuc49.dll、libEGL.dll、libgcc_s_sjlj-1.dll、libGLESv2.dll、libstdc++-6.dll、libwinpthread-1.dll、Qt5Core.dll、Qt5Gui.dll、Qt5Network。 dll、Qt5Qml.dll、Qt5Quick.dll、Qt5V8.dll。
  • Qt-Libraries 还有一个依赖walker 的替代方案。它称为 windeployqt,您可以在 QTDIR/bin/windeployqt 中找到它。本页底部有说明:http://doc.qt.io/qt-5/windows-deployment.html
【解决方案2】:

将“C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin”添加到您的路径中。然后应用程序应该可以工作了。

【讨论】:

  • 糟糕的想法。如果您尝试在 Creator 之外启动它,您可能正在尝试制作/测试可部署的副本。
【解决方案3】:

不用担心丢失的 dll 文件。 将您的 .exe 文件放入此路径的文件夹中:“C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin”

您现在可以运行 .exe 文件了。它工作正常。

【讨论】:

  • 我不会将应用程序放在其他应用程序的 bin 文件夹中...为了测试是的,但这不是解决问题的方法。
  • 虽然可以在那里运行应用程序,但绝对不可能随每个可执行文件一起发布 Qt 发行版。如上所述,正确的做法是解决所有依赖关系。
  • 不要这样做,除非您只是想在自己的机器上运行它(并且出于任何原因不想在 Creator 中单击执行按钮)。这无助于部署。