【问题标题】:Qt5 opens console with gui applicationsQt5 使用 gui 应用程序打开控制台
【发布时间】:2013-12-28 03:54:11
【问题描述】:

我在 Windows 上使用 Qt5.2 (git) 和 MSVC13。如果我构建任何应用程序(甚至是模板),它总是在 cmd.exe 窗口中打开。我尝试了不同的 Qt 版本和不同的编译器(甚至是 MinGW),但我总是遇到同样的问题。 但是,如果我使用 QtDesigner 中的绿色播放按钮启动应用程序,它会在没有 cmd 窗口的情况下打开。 正如here 所建议的那样,我尝试了“CONFIG -= 控制台”,但没有任何效果。我也不使用testlib。 在我的 qmake.conf 中,我看到“QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS”这一行

这是否取决于我放在应用程序目录中的 dll 文件? QtDesigner 不会将任何 dll 复制到构建文件夹,但它会设置一些环境变量。要从单独的文件夹运行应用程序,我将 Qt lib 文件夹中的相应 dll 复制到应用程序 exe 文件夹中。

对这种奇怪的行为有什么想法吗?

【问题讨论】:

  • 你碰巧用过qdebug吗?
  • 不,我不这么认为,它也发生在模板项目和使用发布 dll 的
  • 尝试使用依赖walker——你可能在某个地方有“全局”dll。我没有 MSVC13,所以我无法调查。您使用的是 Express 版还是全功能版?
  • 我使用的是全功能版的 MSVC13,但我只使用 MSVC 编译器,但使用 QtCreator 作为 IDE。 PS:请在我之前的帖子中将 QtDesigner 替换为 QtCreator ;)

标签: windows visual-studio qt console


【解决方案1】:

在 MSVC 2013 中,转到您的项目属性/链接器并从以下位置更改:

/SUBSYSTEM:CONSOLE

收件人:

/SUBSYSTEM:WINDOWS

它对我有用。

【讨论】:

  • 我尝试将“QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS”标志单独设置为来自 QtDesigner 的附加 make 标志,但它没有任何区别
  • 你使用 MSVC 还是 QtCreator?您在问题中说的是 MSVC。
  • 我使用 MSVC13 编译器和 QtCreator 作为 IDE。然而,问题在于现在不同的编译器。我使用 Qt 的 SVN 版本可能是个问题吗?在我的旧设置上使用带有 MSVC12 的 Qt 预编译版本没有出现此问题。
【解决方案2】:

好的,这需要一段时间,但我终于在这里找到了解决方案: Hide console of Windows Application

我不得不替换主入口函数:

替换以下代码:

int main(int argc, char *argv[])
{
     QApplication app(argc, argv);
     // your code*
}

通过

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd)
{
    int argc = 0;
    QApplication app( argc, 0 );
 }

谢谢大家!

【讨论】:

    【解决方案3】:

    run in terminal 复选框是否被选中?

    【讨论】:

    • 不,在终端中运行未检查。但是,我正在经历完全相反的效果。如果我从 QTDesigner 启动我的程序,它不会打开控制台。但是,如果我从 Windows 资源管理器作为独立程序启动它,它会启动控制台。
    • @DayAndNight 你看this了吗?
    • 是的,谢谢,我厌倦了我原来帖子中的建议,但不幸的是问题仍然存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    相关资源
    最近更新 更多