• 10188阅读
  • 3回复

[已解决]Qt控制台程序无法输出结果? [复制链接]

上一主题 下一主题
离线huang_yj
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-12
我用的是Qt4.6,用Qt Creator建了个空的工程,输入如下代码:
#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char* argv[])
{
cout << "hello, world!" << endl;

system("pause");

return 0;
}
成功编译后,运行时居然连"hello, world"都没有显示出来,只有“请按任意键继续……”,请问这是什么问题啊?
[ 此帖被huang_yj在2009-12-14 01:08重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-12
原因很简单,你看到的 "pause"这个程序的运行结果。
这也说明你建立的不是控制台程序,而是windows程序。
离线huang_yj
只看该作者 2楼 发表于: 2009-12-14
您说对了,确实是我建立工程时弄错了,建立了一个空的Qt工程,而不是Qt console程序。
不过,不能因为我调用了system()函数判定这是一个windows程序,console程序也是可以调用system()的。
离线dbzhang800

只看该作者 3楼 发表于: 2009-12-14
引用第2楼huang_yj于2009-12-14 01:07发表的  :
您说对了,确实是我建立工程时弄错了,建立了一个空的Qt工程,而不是Qt console程序。
不过,不能因为我调用了system()函数判定这是一个windows程序,console程序也是可以调用system()的。


windows 的链接时分 windows 和 console 两个子系统。也是就只和链接有关,与编译无关。

比如一个简单的helloworld.cpp程序

以下任何一条命令
  1.     g++  helloworld.cpp
  2.     g++  helloworld.cpp -mconsole
  3.     g++ helloworld.cpp -Wl,subsystem,console



生成的都是控制台程序


  1.     g++  helloworld.cpp -mwindows
  2.     g++ helloworld.cpp -Wl,subsystem,windows



生成的是所谓的gui程序

同样,用微软的vs系列时cl.exe,同样分这两种情况
  1.     cl helloworld.cpp
  2.     cl helloworld.cpp /subsystem:console
  3.     cl helloworld.cpp /subsystem:windows




带界面的程序如果链接 console 子系统,将每次伴随着界面都会弹出一个黑色的控制台窗口。
控制台程序如果链接 windows 子系统,由于根本不生成控制台窗口,也不存在控制台输出了。
快速回复
限100 字节
 
上一个 下一个