C++ Qt C++;直接执行控制台应用程序时,没有输出到标准输出
我是Qt新手,使用了示例项目xmlstreamlint。当我在main中执行printf时,我会在从QT Creator运行应用程序时看到输出。但是当我导航到debug目录并从命令shell运行exe时,我看不到任何输出 我在互联网上搜索了几个小时,并尝试了以下方法: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
//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”)}
一旦您从直接编译的basicC
程序获得标准输出,您就可以在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”)}
一旦您从直接编译的basicC
程序获得标准输出,您就可以在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