Ben*_*oît 15 c++ qt cout qt-creator visual-studio
无论出于何种原因,std :: cout都不会显示我的应用程序.我的开发环境如下所示.
我正在使用Qt Creator开发Qt应用程序.由于Qt Creator无法从我的工作站(XP64)启动,我目前正在使用Visual Studio 2008和Qt插件(通过导入.pro项目文件)进行开发.一切似乎都很好,应用程序工作.
在某些情况下(取决于命令行参数),我不想启动HIM,只是在CLI中显示几个句子(例如,命令行必需参数).
我没有收到任何错误,但没有显示任何内容.我相信运行的相应代码是(经典)以下:
std::cout << "is this going to be displayed ?" << std::endl;
Run Code Online (Sandbox Code Playgroud)
你知道为什么没有显示什么吗?
jam*_*lin 18
在Windows上,程序通常构建为SUBSYSTEM:WINDOWS应用程序或SUBSYSTEM:CONSOLE.
使用SUBSYSTEM:CONSOLE构建的程序应该是文本模式应用程序.对于这种类型的应用程序,stdout和stderr打印到您从中启动它们的控制台,如有必要,创建一个新的控制台.
相比之下,SUBSYSTEM:WINDOWS应用程序不需要使用控制台.您仍然可以写入stdout和stderr,但它们不会去任何地方.您可以使用AllocConsole创建要打印的控制台,但请注意,这将始终打印到新创建的控制台窗口,而不是打印到您启动程序的控制台窗口.
SUBSYSTEM的一个技巧:WINDOWS应用程序是即使没有控制台,你仍然可以管道stdout和stderr.所以管道stdout,你可以这样做:
YourApplication.exe > output.txt
Run Code Online (Sandbox Code Playgroud)
或者如果你有cat
(或同等的):
YourApplication.exe | cat
Run Code Online (Sandbox Code Playgroud)
另请注意,SUBSYSTEM:WINDOWS应用程序和SUBSYSTEM:CONSOLE应用程序之间没有任何区别,除了Windows在创建进程时如何处理它们.(您可以在SUBSYSTEM:CONSOLE应用程序中创建窗口.)因此,您可以轻松地在SUBSYSTEM类型之间切换(例如,使用SUBSYSTEM:CONSOLE用于调试版本,SUBSYSTEM:WINDOWS用于版本版本).
Ben*_*oît 17
好的,回答发现.当然,在遇到这些问题时一如既往的简单回答.Michael Aaron走在正确的轨道上.
只需在项目配置(/ Configuration properties/Linker/System)中将SubSystem更改为Console,即可完成所有工作.GUI仍然有效,但使用后台控制台.我可以解决这个问题.