2013-12-10 108 views
1

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

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

这种奇怪行为的任何想法?

+0

你碰巧用过qdebug吗? – friendzis

+0

不,我不这么认为,它也发生在模板项目和使用发布DLL的 – DayAndNight

+0

尝试使用依赖沃克 - 你可能有“全球”DLL的地方。我没有MSVC13,所以我无法调查。你使用Express版还是全功能版? – friendzis

回答

1

好吧,这花了一段时间,但我终于找到了解决办法在这里: Hide console of Windows Application

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

替换下面的代码:

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

by

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

谢谢大家!

0

是否勾选了复选框run in terminal

enter image description here

+0

不,在终端中运行没有被选中。不过,我正在经历完全相反的效果。如果我从QTDesigner启动我的程序,它不会打开控制台。但是,如果我从Windows资源管理器作为独立程序启动它,它将启动控制台。 – DayAndNight

+0

@DayAndNight你看过[这个](http://stackoverflow.com/questions/760323/why-does-my-qt4-5-app-open-a-console-window-under-windows?lq=1 )? –

+0

是的,谢谢,我厌倦了我原来的帖子中提出的建议,但不幸的是问题仍然存在。 – DayAndNight

2

在MSVC 2013去你的项目属性/连接器与变革:

/SUBSYSTEM:CONSOLE 

要:

/SUBSYSTEM:WINDOWS 

它为我工作。

TODO

+0

我试图设置“QMAKE_LFLAGS_WINDOWS =/SUBSYSTEM:WINDOWS”标志作为QtDesigner的附加make标志,但它没有区别 – DayAndNight

+0

你使用MSVC还是QtCreator?你在问题中说MSVC。 – Kikohs

+0

我使用MSVC13编译器和QtCreator作为IDE。但是现在问题在于不同的编译器。可能是我使用Qt的SVN版本的问题?在我的旧版本中,使用MSVC12预编译版本的Qt时没有出现这个问题。 – DayAndNight

相关问题