2011-06-05 135 views
2

我想Qt Creator中创建下面的简单的控制台应用程序:非Qt的控制台应用程序

#include <iostream> 

int main(int argc, char* argv[]) 
{ 
    std::cout << "Hello WOrld"; 

    return 0; 
} 

我已经看到了SO一些可能重复,我已经选中“运行在终端”选项在运行设置。控制台窗口在CTRL + R上弹出,但不显示“Hello World”,只是“按Enter键退出”。

以上是创建一个空项目。

我已经尝试创建一个“Qt控制台应用程序”,它会生成下面的代码。这确实工作正常,但我想要上面的简单的非Qt版本。

#include <QtCore/QCoreApplication> 
#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    std::cout << "Hello World"; 

    return a.exec(); 
} 
+0

我忘了补充,我在Win Xp上,它排除了其他一些重复的建议。 – 2011-06-06 00:19:02

+0

也排除我的答案。 :)我或多或少地假设* sensible * console程序的用法 - 一个Windows应用程序不一定具有标准管道,除非你明确声明它具有它们。 – Arafangion 2011-06-07 04:34:07

回答

1

经过很长时间再次尝试Qt后,它现在可以工作。项目文件默认具有“CONFIG - = qt”。我不确定这是否能解决当时的问题,但这是我能看到的唯一区别。

完全.pro文件:

TEMPLATE = app 
CONFIG += console 
CONFIG -= qt 

SOURCES += main.cpp 
0

我可以用例子中看到的唯一的缺点是该流不刷新(请在std ::法院行更改为:

std::cout << "Hello World" << std::endl; 

然而,这是不太可能的问题你有,虽然我发现在​​下面的例子意味着它确实是一个缓冲区处理问题,其中QtCreator对缓冲作出了一些假设(注意,该url添加了一个std :: cin.get()调用,该调用强制应用程序暂停,因此,你当然应该看到一些输出)。

+0

这还没有完成。 cin.get()也是不需要的,现在我只需要按两次enter就可以退出。我仍然没有得到你好的输出。 – 2011-06-06 01:11:06

+0

尝试在正常的控制台窗口中运行它,而不是QTCreator的控制台,假设它们有区别。 – Arafangion 2011-06-06 03:13:01

2

除了勾选“在终端中运行”,您需要将“CONFIG + = console”添加到.pro文件(如果您使用的是qmake)。

TEMPLATE = app 

CONFIG += console 

SOURCES += main.cpp 
+0

+1是有意义的,因为平台是windows。 – Arafangion 2011-06-07 04:36:13

0

如果你绊倒了这个线程,因为应用程序立即退出和控制台只显示“按Enter键退出”:

这是你的应用程序的行为,如果你从QtCreator启动它,它不能找到依赖的DLL(顺便说一句,非常没有帮助)。为了找出错过了什么,你可以在没有QtCreator的情况下启动你的应用程序。从属DLL必须位于此处列出的其中一个位置http://msdn.microsoft.com/de-de/library/7d83bc18.aspx

相关问题