Qt运行常见问题
一、Qtcreator中調試控制臺程序及調用printf打印不顯示問題
方法1
在qtcreator中調試控制臺程序或者其它c語言編寫的程序默認直接點擊調試會有窗口一閃而過并不會進入調試會直接結束,如果需要調試需要設置運行環境,取消Run in terminal選項。項目->運行->取消勾選Run in terminal
方法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-(工程名)文件夾刪除,再運行
總結
- 上一篇: 深入浅出设计模式之设计模式简介
- 下一篇: bios怎么禁用usb口 如何关闭计算机