【问题标题】:My Qt5 executable does not run outside of Visual Studio 2010我的 Qt5 可执行文件不能在 Visual Studio 2010 之外运行
【发布时间】:2013-04-02 17:59:51
【问题描述】:

我使用 Qt5 和 Visual Studio 2010 完成了一个大型项目。使用运行按钮在 Visual Studio 中一切正常。

但我的目标当然是在没有 Visual Studio 的情况下将其发布给其他人。

我的问题是:我无法在 Visual Studio 之外运行 .exe。起初我被要求提供几个 dll,我在 Qt5 bin 文件夹中找到了它们。

但是知道我已经摆脱了这些消息,当我不想打开我的 exe 时,什么也没有发生。 什么都没有.....

我什至无法在 Windows 任务管理器中找到我的 exe。

这里有人知道这个问题的答案吗?

【问题讨论】:

  • 您应该静态链接到 Qt5。不知道如何在 VC 中做到这一点。
  • 不,您不能使用静态链接,除非您的 Qt 是静态构建的。另外还有一些许可问题。

标签: c++ visual-studio-2010 qt5


【解决方案1】:

有一些 dll 文件在运行时加载,并且在不存在时不会给您任何错误、警告或任何内容(对依赖项walker 也完全透明)。这就是platforms\qwindows.dll - 请注意,它必须位于相对于可执行文件的platforms\ 子文件夹中。您可能还缺少libEGL.dlllibGLESv2.dll

【讨论】:

  • 是的,我认为你是对的!我试图将我的 exe 放在 qt bin 文件夹中,它可以工作!但我找不到您正在谈论的子文件夹。我正在使用 Qt5。你知道我怎么知道我的程序试图加载哪个 dll 吗?谢谢您的回答 !现在问题离解决不远了!
  • 缺少一个libEGL.dll 谢谢!你帮了大忙!
  • 在运行时加载的三个 dll 是平台插件、ligEGL 和 libGLESv2 - 平台插件最初位于qtbase/plugins/platforms。您可以从那里复制它并放入应用程序的文件夹中,只需记住将其与平台文件夹本身放在一起。其余的dll需要和exe在同一个路径,只有平台插件需要单独的文件夹。
【解决方案2】:

Dependency Walker 在这种情况下不是很有用,因为它显示了非常奇怪的 dll 文件丢失:API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL 等。

您可以使用 Qt5.x cmd 提示符(5.x 是您正在使用的版本)并从您的构建目录运行 windeployqt.exe。它会自动找到所有必要的 dll 文件并将其复制到您的输出目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多