qtdebug編譯文件啟動
A. QT編譯錯誤,怎麼解決
項目->構建設置,把中文路徑改為英文路徑 ,記得清理之後再重新構建哦
B. QtCreator怎麼使用debug功能
您好。
在項目project中配置下為debug模式!!Make: mingw32-make.exe debug -w in 。
首先要設置一個斷點,然後Debug(當然要在Debug模式下),
程序會運行到斷點處,然後就可以用F10或F11之類的調試了
Qt-SDK有debug功能的,不過用的是MingW編譯器,編譯成動態的debug版本後可以debug
如果還有問題,可以繼續追問,感謝。
C. qt debug運行時電腦重啟
可能是程序長時間運行崩潰的原因。
發布的應用程序使用的是release版本。release版本是比較難調試的,因為缺少很多調試信息,在VC/VS中我們可以通過生成DMP + PDB進行源碼級定位,使用這種方法,當程序在別人電腦上出現異常或者崩潰的時候,會生成DMP文件,然後把該文件拷貝到自己的開發機器上,配合pdb文件調試就可以找到錯誤的位置,直接把問題定位到源代碼中的位置。
D. qt如何把debug編譯成release版本
這個十分簡單, 如果我理解的沒有錯的話, 你應該是在新建項目時沒有添加Release對象吧?
1. 點擊左側邊欄的Projects
2. 在Build Step里的qmake build configuration中選擇Release
此時你編譯出來的對象就是release的了...
如果是要上交的內容, 更改下build directory, 就OK了
如果你是在Shell下的話... qmake加參數 "-CONFIG+=Release(或者Debug)"
E. qt編譯後運行錯誤 出現應用程序無法正常啟動(0Xc0150002).請單擊「確定」關閉應用程序.
代碼有問題
F. qt編程問題,高分求助 為什麼我在編譯器里編譯能運行,然後到了debug目錄下就運行不了,它提示說
debug目錄下,需要依賴debug版本的動態庫,你確定你拷貝的動態庫文件是DEBUG版本的嗎?比如QtCored4.dll,QtGuid4.dll,而不是QtCore4.dll和QtGui4.dll
G. qt4.8.5build debug libraries 編譯有什麼用
QT Debug大集合 詳細講解是本文要介紹的內容,相信友們應該在編程過程中遇到各種各樣的Debug,先來看內容。QT Debug集錦~ 這篇是在10年測試QT 過程中遇到的問題:
1、中文顯示問題:
#include <QApplication> #include <QLabel> #include <QTextCodec> int main(int argc, char* argv[]) { QApplication app(argc,argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QLabel *label = new QLabel(tr("這里是中文")); label->Show(); return app.exec(); }
編譯代碼,得到的錯誤是: 'tr'在此作用域中尚未聲明。
昨天為什麼沒有出現這種錯誤呢?因為昨天的代碼是從qt creator生成的MainWindow中挑出來的,tr被聲明為QObject的一個static方法,因此在MainWindow中使用tr不會有問題。
把上面的QLabel *label=new QLabel(tr("這里是中文"));
改為
QLabel *label=new QLabel(QObject::tr("這里是中文"));
2、中文問題:
使用sqlite資料庫顯示亂碼的問題
本人近日在使用QT進行sqlite資料庫編程時,出現中文數據顯示亂碼情況,附源碼如下:
//main.cpp #include <QtGui> #include <QtCore/QTextCodec> #include <QSqlTableModel> #include <QTableView> #include <QHeaderView> #include <QSqlRecord> #include <QtGui/QLabel> #include <QString> #include <QVariant> #include "connection.h" #include "sql.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); //創建資料庫連接 if (!createConnection()) return 1; //創建學生信息表 createTables(); //初始添加數據 addData(); enum{ Student_Id = 0, Student_Schnum = 1, Student_Name = 2, Student_Sex = 3, Student_Nation = 4 }; QSqlTableModel *model = new QSqlTableModel(); model->setTable("student"); model->setSort(Student_Schnum, Qt::AscendingOrder); model->setHeaderData(Student_Schnum, Qt::Horizontal, QObject::tr("學號")); model->setHeaderData(Student_Name, Qt::Horizontal, QObject::tr("姓名")); model->setHeaderData(Student_Sex, Qt::Horizontal, QObject::tr("性別")); model->setHeaderData(Student_Nation, Qt::Horizontal, QObject::tr("民族")); model->select(); QTableView *view = new QTableView; view->setModel(model); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setSelectionBehavior(QAbstractItemView::SelectRows); view->setColumnHidden(Student_Id, true); view->resizeColumnsToContents(); view->setEditTriggers(QAbstractItemView::NoEditTriggers); QHeaderView *header = view->horizontalHeader(); header->setStretchLastSection(true); view->show(); return a.exec(); } //connection.h #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError> #include <QSqlDriver> inline bool createConnection() { QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("sim.dat"); if (!db.open()) { QMessageBox::warning(0, QObject::tr("Database Error"), db.lastError().text()); return false; } return true; } #endif // CONNECTION_H //sql.h #include <QSqlQuery> #ifndef SQL_H #define SQL_H inline void createTables() { QSqlQuery query; query.exec("CREATE TABLE student (" "id INTEGER PRIMARY KEY, " "schnum INTEGER NOT NULL, " "name VARCHAR(40) NOT NULL, " "sex VARCHAR(4) NOT NULL, " "nation VARCHAR(10) NOT NULL)"); } inline void addData(){ QSqlQuery query; for(int i =0;i<100;i++){ query.exec("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, '天殘腳,'男', '漢族')"); } } #endif // SQL_H
上網查了許多無果,後來在閱讀一篇技術文章中無意發現,原來在插入數據語句若有中文必須先QObject::tr()一番,即進行編碼,
將 Sql.h 中 query.exec("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, '天殘腳,'男', '漢族')"); 改為如下 query.exec(QObject::tr("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, '天殘腳,'男', '漢族')"));
結果在顯示中都能得正確顯示。
注意,如果語句 QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));中的編碼改為utf-8則會顯示亂碼。
3、中文問題:
如果使程序只支持一種編碼,也可以直接把整個應用程序的編碼設置為GBK編碼, 然後在字元串之前 加
tr(QObject::tr), qApp->setDefaultCodec( QTextCodec::codecForName("GBK") ); QLabel *label = new QLabel( tr("中文標簽") );
4、找不到<QtSql >
求助:提示無法打開包含文件QtSql
.Pro文件里加入 QT += sql
4、No rule to make target 'mkspecs/default/qmake.conf', needed by `Makefile'. Stop. 錯誤
mingw32-make: *** No rule to make target `http://www.cnblogs.com/http://www.cnblogs.com/Qt/4.3.3/mkspecs/default/qmake.conf', needed by `makefile'. Stop. make[2]: Entering directory `/home/lzy/tps2/rplan/super' make[2]: *** No rule to make target `/home/lzy/qt/qt-3.3.2/mkspecs/default/qmake.conf', needed by `Makefile'. Stop. make[2]: Leaving directory `/home/lzy/tps2/rplan/super'
5、mingw32\bin\ld.exe: cannot find -lqtmaind錯誤
這個錯誤是缺少某些庫,將mingw重新下載安裝即可。
6、編譯時可能會遇到如下錯誤:previous declaration 'long int InterlockedIncrement(long int*)' here
此為qt的bug需要修改源代碼 (Qt\4.4.3\src\corelib\arch\qatomic_windows.h),原文件如下:
Solution:
(1) Qt\4.4.3\src\corelib\arch\qatomic_windows.h:
#if !(defined Q_CC_BOR) || (__BORLANDC__ < 0x560) extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long *); __declspec(dllimport) long __stdcall InterlockedDecrement(long *); __declspec(dllimport) long __stdcall InterlockedExchange(long *, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long); } #else extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long volatile*, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedDecrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedExchange(long volatile*, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long volatile*, long); } #endif you will see above code in Qt\4.4.3\src\corelib\arch\qatomic_windows.h: file. I modified like below and it works. /*#if !(defined Q_CC_BOR) || (__BORLANDC__ < 0x560) extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long *); __declspec(dllimport) long __stdcall InterlockedDecrement(long *); __declspec(dllimport) long __stdcall InterlockedExchange(long *, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long); } #else */ extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long volatile*, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedDecrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedExchange(long volatile*, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long volatile*, long); } // #endif
7、編譯錯誤,顯示 can not find -lqtmaind。
這是qt的debug庫,安裝完成後需要再自己編譯這個庫。在Qt的開始菜單中,你可以找到一個程序 Qt 4.4.0 (Build Debug Libraries),運行這個程序就能編譯Qt的Debug庫了。
小結:QT debug大集合 詳細講解的內容介紹完了,希望本文對你有搜幫助。
H. qt調試無法開始 求助
1.首先在該鏈接處下載 Qt library和 Qt creater(http://qt-project.org/downloads),
我使用的 Qt library是qt-win-opensource-4.8.5-mingw.exe,
Qt creater是qt-creator-windows-opensource-2.7.2.exe;
安裝QT之前,還需要下載MinGW-gcc,我使用的是MinGW-gcc440_1.zip;
http://ishare.iask.sina.com.cn/f/34637805.html這兒可以免費下載;
2.做好了所有準備後,我們開始安裝;
(1)。在安裝Qt之前,我們簡單了解下MinGW。(http://ke..com/view/98554.htm)
MinGW是一個可以自由使用和自由發布的Windows特定頭文件和使用GUN工具集導入庫的集合,允許在GUN/linux和我Windows平台生成本地的Windows程序而不需要第三方C運行時庫。
我們在安裝Qt之前,需要在系統中存放這個MinGW工具庫。這里,我存放的位置是 D:\Install software;(當然,你完全可以存放在其他地方,只要你自己記住位置就可以了),因為下面的安裝過程需要用到這個庫。
(2)。接下來,開始安裝Qt library。直接雙擊exe文件就可以了,然後根據提示進行安裝,這里我選擇安裝的位置是D:\QT;安裝過程中有個地方需要填入MinGW的位置,該位置就是上一步中MinGW存放的位置,我這里的位置是D:\Install software\mingw;然後很輕松就完成安裝;
(3)。然後,為了以後能更方便的使用Qt,我們需要先編譯一下。在開始菜單中,找到Qt by Digia v4.8.5 (MinGW OpenSource)這個文件夾,打開,裡面會有Qt 4.8.5(Build Debug Libraries)的一個批處理文件,點擊後會進入windows下的DOS界面,然後根據裡面的提示,根據自己的選擇來編譯這個庫。很簡單,就2步吧。不過這個時間有點長,因為庫比較大,我電腦比較慢,差不多編譯了快4個小時,編譯時就和linux下的命令行界面一樣的,一行一行的指令往上飛。
(4)。編譯完成後,我們需要配置系統環境變數。右鍵單擊我的電腦,選擇屬性,進入高級系統設置,單擊右下角的環境變數,在環境變數path中添加 ;D:\QT\bin;D:\Install software\mingw\bin 然後再添加兩個環境變數
QTDIR=D:\QT(編譯時的默認目錄,這個可以隨意設置,用來存放工程文件的);
QMAKESPEC=win32-g++;
到這里,windows下的Qt開發環境基本就配置好了。
下面,我們在D:\QT的目錄下創建一個project的文件夾,再在project中創建hello文件夾,再在hello文件夾中創建一個cpp文件,寫入一下測試程序:
#include <QApplication> //包含QApplication頭文件
#include <QPushButton> //包含QPushButton頭文件
int main(int argc, char *argv[]) // 還是標準的main函數
{
QApplication app(argc, argv); // 構造應用,同MFC中的WinApp
QPushButton hello("Hello world!"); // 構造PushButton
hello.resize(100, 30); // 設置按鈕大小
hello.show(); // 顯示按鈕
return app.exec(); // 執行應用,同MFC中的Run
}
然後打開開始菜單中的 Qt 4.8.5 Command Prompt ,通過cd 命令找到cpp所在的路徑地址,再輸入
qmake -project
make
最後,編譯成功通過,會在hello文件夾下的release文件夾中生成一個。exe文件,雙擊執行即可。也可以在DOS下執行,進入文件夾目錄,直接輸入:hello.exe 即可;這里,我還列出了一些常用指令
dir 查看文件列表,同linux下的「ls」
cd 改變文件目錄 「cd 」返回到上一層 「cd \」到所在磁碟,一般為c:
del 刪除一個文件
mkdir創建一個文件夾
rmdir 刪除一個空文件夾
notepad xx.cpp 用記事本打開(如果沒有則是創建)xx.cpp文件 也可以是。h文件
3.如果覺得使用命令行不習慣,那麼就可以安裝Qt creater,這是一個圖形化的設計編譯界面,直接使用EXE文件安裝。安裝完成後,打開軟體,單擊工具欄,單擊選項按鈕,進入下面的頁面:
單擊構建和運行(這是新版本,老版本是「Qt4」),就是上面這個頁面,將Qt版本中的qmake路徑手動設置為Qt安裝路徑中的bin文件夾下的qmake.exe文件即可(添加,確定);
這時你可以在creater中添加hello的項目,看看調試時候能夠通過,能否正常運行,如果出現調試不通過,gbd異常中斷,那麼你還需要下載gdb。因為在之前的Qt Creator中,是以一個Qt SDK的整體來提供的,裡面就包括了MinGW和調試器,而且也無需配置,現在的新版本都是分散安裝的,所以就需要自己單獨再找找了。網上的一個說法是2.5以上的版本必須使用7.2 IIRC版以上的GDB,需要需要自己單獨下載,這里我找到兩個下載地址。
I. 為什麼window下qt執行完make後,點擊debug文件夾裡面的exe會出現應用程序無法啟動(0x0150002)
路徑不對 把Debug里的exe 拷到上一級目錄運行
J. linux下執行qt程序怎麼編譯運行
qmake -project? 已經有.pro文件了! 直接運行qmake或者qmake snake.pro或qmake -makefile snake.pro.
重新解壓,按以下步驟做:
$ qmake
$ make
找到可執行文件(不是.o, 沒後綴的), 一般如果snake.pro中沒設置TARGET,默認生成的可執行文件為snake,輸入
.$ /snake