Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt C++;直接执行控制台应用程序时,没有输出到标准输出_C++_Qt_Console_Stdout - Fatal编程技术网

C++ Qt C++;直接执行控制台应用程序时,没有输出到标准输出

C++ Qt C++;直接执行控制台应用程序时,没有输出到标准输出,c++,qt,console,stdout,C++,Qt,Console,Stdout,我是Qt新手,使用了示例项目xmlstreamlint。当我在main中执行printf时,我会在从QT Creator运行应用程序时看到输出。但是当我导航到debug目录并从命令shell运行exe时,我看不到任何输出 我在互联网上搜索了几个小时,并尝试了以下方法: //freopen ("/dev/tty", "a", stdout); QTextStream(stdout) << "string to print" << endl; qDebug("Hallo q1

我是Qt新手,使用了示例项目xmlstreamlint。当我在main中执行printf时,我会在从QT Creator运行应用程序时看到输出。但是当我导航到debug目录并从命令shell运行exe时,我看不到任何输出

我在互联网上搜索了几个小时,并尝试了以下方法:

//freopen ("/dev/tty", "a", stdout);
QTextStream(stdout) << "string to print" << endl;
qDebug("Hallo q1");
qStdOut() << "Hallo\n";
std::cout << "\nHello World!\n";
std::cout << "Hallo" <<endl;
fflush(stdout);
我需要帮助。从命令shell执行时绝对没有输出。即使使用qDebug()。 也许是错误的exe?我在中找到了xmlstreamlint.exe C:\Qt\Examples\Qt-5.7\xml\build-xmlstreamlint-Desktop\u Qt\u 5\u 7\u 0\u MSVC2013\u 64bit-Debug\Debug 每次我构建时都会更新日期。 这让我很伤心


谢谢你的建议。

很抱歉,MSVC2015无法复制
printf()
应该在一行C程序中工作,请先在没有任何IDE或其他任何东西的情况下尝试。打开一个干净的命令shell,运行
vcvars.bat x86
(为您的VS安装提供vcvars的完整路径),然后使用
cl.exe
编译一个
main.c
,它只包含
#include
int main(){printf(“您好,world\n”)}
一旦您从直接编译的basic
C
程序获得标准输出,您就可以在Qt Creator中尝试同样的程序。它仍然可以使用
CONFIG-=QT
TEMPLATE=app
CONFIG+=console
。一旦成功,请尝试删除
CONFIG-=QT
removed。等等你不能在没有说明哪些步骤有效的情况下就抛出这样的问题。如果你不能得到一个C程序来处理标准输出,那么你的问题就不会与C++或Qt有任何关系了,它包含了包括int main(int ARC,char *ARGV[]){qCeEpApple A(ARCC,ARGV);PrINTF(“Hello World”);返回0;//AcExcor();}我创建了一个Hello World程序,它在QT之外工作。不知道如何轻松地将其包含到QT项目中,所以我构建了一个新的控制台项目并添加了printf(“helloworld”)。和前面一样:当从QT Creator执行时,我看到了输出。但是当我从命令shell运行可执行文件时,我没有看到任何输出。然后我删除了QT中的所有内容:#include并调用QCoreApplication。现在,即使在从命令shell运行程序时,也可以看到printf输出。那么创建QCoreApplication的实例似乎会禁用stdout?为什么这只发生在我身上?我不知道。获取Qt的调试构建,并准确跟踪
QCoreApplication
构造函数内部发生的事情。然后编辑所述构造函数以删除代码块,重新构建Qt,并查看它在什么时候停止中断。通过二分法缩小范围,直到可以指向一个或多个错误的WINAPI调用。然后决定它是一个Qt错误还是设计错误,或者是其他原因(例如,本地古怪)。一旦您完成了Qt的调试构建,重建应该需要几秒钟的时间-注意,您必须手动重建核心模块。所以应该很快。抱歉,无法使用MSVC2015复制
printf()
应该在一行C程序中工作,请先在没有任何IDE或其他任何东西的情况下尝试。打开一个干净的命令shell,运行
vcvars.bat x86
(为您的VS安装提供vcvars的完整路径),然后使用
cl.exe
编译一个
main.c
,它只包含
#include
int main(){printf(“您好,world\n”)}
一旦您从直接编译的basic
C
程序获得标准输出,您就可以在Qt Creator中尝试同样的程序。它仍然可以使用
CONFIG-=QT
TEMPLATE=app
CONFIG+=console
。一旦成功,请尝试删除
CONFIG-=QT
removed。等等你不能在没有说明哪些步骤有效的情况下就抛出这样的问题。如果你不能得到一个C程序来处理标准输出,那么你的问题就不会与C++或Qt有任何关系了,它包含了包括int main(int ARC,char *ARGV[]){qCeEpApple A(ARCC,ARGV);PrINTF(“Hello World”);返回0;//AcExcor();}我创建了一个Hello World程序,它在QT之外工作。不知道如何轻松地将其包含到QT项目中,所以我构建了一个新的控制台项目并添加了printf(“helloworld”)。和前面一样:当从QT Creator执行时,我看到了输出。但是当我从命令shell运行可执行文件时,我没有看到任何输出。然后我删除了QT中的所有内容:#include并调用QCoreApplication。现在,即使在从命令shell运行程序时,也可以看到printf输出。那么创建QCoreApplication的实例似乎会禁用stdout?为什么这只发生在我身上?我不知道。获取Qt的调试构建,并准确跟踪
QCoreApplication
构造函数内部发生的事情。然后编辑所述构造函数以删除代码块,重新构建Qt,并查看它在什么时候停止中断。通过二分法缩小范围,直到可以指向一个或多个错误的WINAPI调用。然后决定它是一个Qt错误还是设计错误,或者是其他原因(例如,本地古怪)。一旦您完成了Qt的调试构建,重建应该需要几秒钟的时间-注意,您必须手动重建核心模块。所以应该很快。
CONFIG   += console
CONFIG   -= app_bundle
QT       -= gui
QT       += xml
SOURCES  += main.cpp

# install
target.path = $$[QT_INSTALL_EXAMPLES]/xml/xmlstreamlint
INSTALLS += target