一、Qtcreator中调试控制台程序及调用printf打印不显示问题

方法1

在qtcreator中调试控制台程序或者其它c语言编写的程序默认直接点击调试会有窗口一闪而过并不会进入调试会直接结束,如果需要调试需要设置运行环境,取消Run in terminal选项。项目->运行->取消勾选Run in terminal

qt不输出lua qt printf 无输出_行缓冲

方法2

关于qtcreator调试控制台程序使用printf打印不显示问题,主要原因是缓存原因,有全缓冲,行缓冲,无缓冲,如无特殊操作(fflush(stdout))全缓冲只有达到当前缓冲区大小才会输出,行缓冲则会在接受到\n换行符时输出,无缓冲则是有什么输出什么,网上看到关于该问题的解决方法都是调用fflush进行刷新,这种对于有较多地方那个需要打印比较麻烦,所以根据原理在main函数入口设置标准输出为行缓冲或者无缓冲这样就是实时打印信息了(标准错误一样)

#include<stdio.h>
 
int main()
{
//方法一
  setbuf(stdout,NULL);
 
//方法二
//设置行缓冲需要用到另外一个函数
//_IOFBF 全缓冲
//_IOLBF 行缓冲
//_IONBF 无缓冲
//setvbuf(stdout,NULL,_IONBF,0);
 
return 0;
}

方法3

prinf("Hello World.\n")
    fflush(stdout);

方法4

使用qDebug 

问题分析:标准输出和标准错误输出均有缓存,缓存达到一定程度后,方才输出;

二、Qt 问题:无法解析的外部符号

1.在.pro文件中已经加入依赖项后,头文件可通过提示正常include,运行出现:

main.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl Dialog::Dialog(class QWidget *)" (??0Dialog@@QEAA@PEAVQWidget@@@Z),该符号在函数 main 中被引用

main.obj:-1: error: LNK2019: 无法解析的外部符号 "public: virtual __cdecl Dialog::~Dialog(void)" (??1Dialog@@UEAA@XZ),该符号在函数 main 中被引用

debug\DockWindows.exe:-1: error: LNK1120: 2 个无法解析的外部命令

解决办法:

对项目文件进行重新qmake后在运行该程序

2.新建一个类添加到工程里去,在已经添加头文件的基础上出现上述报错,

解决方法:

1.添加该类的cpp文件

2.将当前qt工程所在的父目录下的 build-(工程名)文件夹删除,再运行