【问题标题】:Qt application does not execute inside Qt CreatorQt 应用程序不在 Qt Creator 中执行
【发布时间】:2012-11-24 22:32:24
【问题描述】:

我正在开发一个跨平台的 Qt 音频应用程序。在 Linux 上,应用程序运行没有任何问题,但在 Windows 上,从 Qt Creator 启动时应用程序不会执行。

当使用 Release 配置运行(或没有调试)时,Qt Creator 简单地说:

“程序意外结束。”

如果我使用 Debug 配置(或调试)运行,Qt Creator 会说:

“在启动过程中程序退出,代码为 0x0000135。”

由于谷歌搜索错误根本没有帮助,我决定将我的应用程序所需的每个 .exe 和 .dll(需要的 Qt 库 - 像 QtCore - 包括在内)复制到一个空目录并且应用程序完美执行,就像在 Linux 下。

所以,我猜这是 Windows 找不到我的应用程序所需的 dll 的问题。

上周末我将系统升级到 Windows 8 时出现了这个问题。以前(使用 Windows 7)我没有这样的问题。

有谁知道不涉及修改构建参数(存储在文件 .user 中)的解决方案?

我不想这样做,因为当我在 Linux 下测试应用程序时,这个文件会失效,我不想保留它的版本。

【问题讨论】:

  • 尝试卸载 Creator 和 Qt,然后重新安装,以便在 Windows 8 更新搞砸时重新应用所有设置。
  • 刚刚尝试完,同样的错误。

标签: c++ qt


【解决方案1】:

刚刚解决了!

可能是 Qt Creator 中的一个错误。

我的项目里面有4个子项目:main.exe,一个core.dll,side.dll,external.dll。

main.exe needs core.dll and side.dll
core.dll needs external.dll

由于 main.exe 只需要 core.dll 和 side.dll,我没有添加对 external.dll 的引用。 Qt Creator 应该足够聪明,能够检测到它的依赖关系并相应地添加它们(好吧,最后这就是在 Linux 下发生的事情)。

由于它没有正确检测到依赖关系,所以当我尝试从 Qt Creator 运行 main.exe 时,它​​没有构建正确的 PATH 环境变量,导致出现问题。

通过在我的 main.pro 文件中添加以下行来解决它:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../external/release/ -lexternal
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../external/debug/ -lexternal

#INCLUDEPATH += $$PWD/../external
win32: DEPENDPATH += $$PWD/../external

注意:我更改了模块名称以便更好地理解。

【讨论】:

    【解决方案2】:

    我猜这是因为执行环境中的路径不再包含 Qt-DLL 的路径。转到项目设置并检查“调试和执行”设置中的 PATH 变量 就我而言,例如: C:\QtSDK\mingw\bin;C:\QtSDK\Desktop\Qt\4.8.1\mingw\lib;...其他路径...

    问候。

    【讨论】:

    • 已经检查过了。路径没问题。如果我不将 Qt dll 复制到“空目录”,应用程序就会执行。
    【解决方案3】:

    问题肯定是缺少一些 dll!我发现当我将 dll 直接放入带有可执行文件的文件夹(例如 png3.dll)中,然后从 qt creator 运行它时,它会运行! 我做了什么:在您的输出目录(可执行文件所在的位置)中,您打开可执行文件(双击),Windows 显示缺少的 dll 名称。您找到它们并直接复制到文件夹中。然后从 Qt creator 运行应用程序!如果 dll 合适,您应该会成功。之后,您尝试从 exec 文件夹中删除 dll 并通过 qt creator 运行应用程序,直到它再次引发错误。这样你就可以找到丢失的 dll。之后,将“构建环境”中的 qt creator“项目”设置中的 dll 路径添加到“路径”变量中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2021-11-04
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多