国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Qt經(jīng)典出錯(cuò)信息

1.Qt經(jīng)典出錯(cuò)信息之QApplication:No such file or directory

這個(gè)出錯(cuò)信息一般是新手在編譯Qt4第一個(gè)應(yīng)用"Hello,World"的時(shí)候,翻開(kāi)Qt編程的第一個(gè)例子。都說(shuō)很簡(jiǎn)單。#include <QApplication>#include <QWidget>int main(int argc, char *argv[]){QApplication app(argc,argv);QWidget *ww=new QWidget();ww->resize(300,200);ww->show();return app.exec();}

main.c:1:25: error:QApplication: No such file or directory
main.c:2:19: error:QLabel: No such file or directory
main.c: In function ‘intmain(int, char**)’:
main.c:9: error: ‘QApplication’ was notdeclared in this scope
main.c:9: error: expected `;' before‘app’
main.c:10: error: ‘QLabel’ was not declared in thisscope
main.c:10: error: ‘label’ was not declared in thisscope
main.c:10: error: expected type-specifier before‘QLabel’
main.c:10: error: expected `;' before‘QLabel’
main.c:13: error: ‘app’ was not declared in thisscope

shell returned 1

Press ENTER or type command tocontinue

一編譯結(jié)果出現(xiàn)了上面這個(gè)錯(cuò)誤,那叫一個(gè)郁悶。

其實(shí)花點(diǎn)心思照著提示,新手也是可以自己解決問(wèn)題的。根據(jù)提示QApplication提示,應(yīng)該是頭文件沒(méi)找到。那我們可以查看當(dāng)前目錄下Makefile里的環(huán)境變量INCPATH知道make應(yīng)用是去哪里找頭文件的。例如

./Makefile 文件部分內(nèi)容

15 CXXFLAGS     = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
16 INCPATH      = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore-I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I.
17LINK          = g++

16行里面的,對(duì)應(yīng)的去查找/usr/include/qt4/QtGui/QApplication這個(gè)文件是否存在(一般是不存在,存在就不會(huì)出錯(cuò)了)。不存在QApplication文件的原因大致有兩個(gè)

1)沒(méi)有裝Qt4的開(kāi)發(fā)包.

解決辦法把開(kāi)發(fā)包裝上,比如ubuntu下就是在shell里執(zhí)行sudoinstall libqt4-devFedora/SUSe下是在shell里執(zhí)行sudoyum install qt4-devel

2) Qt4的開(kāi)發(fā)包裝了,但是調(diào)用了Qt3qmake

因?yàn)橛械南到y(tǒng)里既裝了Qt3,又裝了Qt4。如果調(diào)用了qt3qmake,那么上頭的INCPATH里的頭文件路徑也指向了Qt3,那么是找不到QApplication這個(gè)文件的。對(duì)應(yīng)的解決方法就是調(diào)用Qt4安裝路徑下的qmake去生成Makefile,最好用全路徑或者重新設(shè)置環(huán)境變量:/usr/lib/qt4/bin:/usr/lib/qt-3.3/bin,將QT4寫(xiě)在前。我的機(jī)器Qt4qmake安裝路徑是

zhu@ubuntu:~/test/widget$dpkg -L qt4-qmake |grep qmake |grepbin
/usr/bin/qmake-qt4
/usr/share/qt4/bin/qmake

所以只要執(zhí)行

/usr/bin/qmake-qt4;make 或者/usr/share/qt4/bin/qmakemake

都能以Qt4的文件去編譯這個(gè)最簡(jiǎn)單的Qt4應(yīng)用。

Tags: Qt,出錯(cuò)信息,編譯
Thisentry was posted on Saturday, June 6th, 2009 at 6:50 pm and is filedunder Qt
技術(shù).You can follow any responses to this entry through the RSS2.0 feed. You can leavea response, or trackbackfrom your own site.





如果執(zhí)行以下命令:
qmake-project
qmake
make
仍有錯(cuò)誤,可能是qmake版本問(wèn)題,可以用這樣的命令:
qmake-qt4 -project
qmake-qt4
make
即可解決,并生成與項(xiàng)目名匹配的可執(zhí)行文件,之后執(zhí)行方式如:./xxx(xxx為剛生成的可執(zhí)行文件名)



2.Qt經(jīng)典出錯(cuò)信息之undefinedreference to `vtable forclassname這個(gè)出錯(cuò)信息太常見(jiàn)了,用過(guò)Qt兩個(gè)月以上的朋友基本上都能自己解決了,因?yàn)樘?jīng)典了,可以給新手參考。

出錯(cuò)信息一般類似:undefinedreference to `vtable for classnameMyWidget`
在執(zhí)行make命令后出現(xiàn)。

出錯(cuò)原因是在定義類的時(shí)候?yàn)榱四苁褂?font face="Liberation Serif, serif">signals和slot,在類定義的后面加了Q_OBJECT引起。因?yàn)?font face="Liberation Serif, serif">Q_OBJECT是一個(gè)宏,在不同的類中展開(kāi)是不同的代碼,例如在mywidgeth.h中生成的
public:
templateinline void qt_check_for_QOBJECT_macro(const T &_q_argument)const {
int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument);i = i;
}
static const QMetaObject staticMetaObject;
virtualconst QMetaObject *metaObject() const;
virtual void*qt_metacast(const char *);
static inline QString tr(const char*s, const char *c = 0) { return staticMetaObject.tr(s, c); }
staticinline QString trUtf8(const char *s, const char *c = 0) { returnstaticMetaObject.trUtf8(s, c); }
static inline QString tr(constchar *s, const char *c, int n) { return staticMetaObject.tr(s, c, n);}
static inline QString trUtf8(const char *s, const char *c, intn) { return staticMetaObject.trUtf8(s, c, n); }
virtual intqt_metacall(QMetaObject::Call, int, void **);private:
可以看到以上的代碼聲明了3個(gè)從父類繼承的3個(gè)虛函數(shù)。本來(lái)這三個(gè)函數(shù)的實(shí)現(xiàn)應(yīng)該是由moc_mywidget.cpp來(lái)完成。
而當(dāng)前的錯(cuò)誤正是因?yàn)?font face="Liberation Serif, serif">Makefile里沒(méi)有將moc_mywidget.cpp加入編譯引起。

Makefile
背后的原因是qmake,因?yàn)?font face="Liberation Serif, serif">Qt的編譯系統(tǒng)是通過(guò)qmake.pro文件轉(zhuǎn)換成Makefile文件。當(dāng)qmake掃描.h代碼時(shí)發(fā)現(xiàn)有Q_OBJECT這樣字眼的代碼時(shí),會(huì)將一個(gè)用moc生成moc_xxx.cpp代碼的依賴關(guān)系寫(xiě)到Makefile里。如果掃描時(shí)沒(méi)有找到Q_OBJECT就不會(huì)生成額外的moc_xxx.cpp這樣的文件。

出現(xiàn)最初一幕的原因是在執(zhí)行qmake的時(shí)候.h代碼里并沒(méi)有O_OBJECT這樣的代碼。而執(zhí)行make的時(shí)候.h里已經(jīng)有Q_OBJECT了,解決的方法就是重新執(zhí)行qmake,然后執(zhí)行make.

本站所有文章由本站和原作者保留一切權(quán)力,僅在保留本版權(quán)信息、原文鏈接、原文作者的情況下允許轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)勿刪改原文內(nèi)容,并不得用于商業(yè)用途。謝謝合作。
原文鏈接:[url]http://www.cuteqt.com/blog/?p=116[/url]

shiroki 發(fā)表于2009-6-22 09:56

有人提出了另外一個(gè)可能導(dǎo)致該問(wèn)題的錯(cuò)誤,那就是將類的聲明和實(shí)現(xiàn)都放在.cpp文件中。這是初學(xué)者經(jīng)常會(huì)做的事情。 要知道moc工具是不處理cpp文件的,所以如果你的Q_OBJECT宏寫(xiě)在cppmoc是會(huì)直接忽略掉的。。。大家寫(xiě)代碼的時(shí)候還是盡量遵循聲明和實(shí)現(xiàn)分開(kāi)的原則為佳。

wd007 發(fā)表于2009-6-22 19:16

呵呵,寫(xiě)的真不錯(cuò),學(xué)習(xí)了一下

但有時(shí)候,安裝完Qt后,卻沒(méi)有設(shè)置Qt的環(huán)境變量,是否會(huì)出現(xiàn)上述問(wèn)題呢?

也會(huì)出現(xiàn)同樣的問(wèn)題,我就碰到過(guò)這樣的問(wèn)題



3.qvfb窗口為什么不能加載 HelloQT  窗口???



我是QTop 4.5.0版本,然后又裝了 QTembedded 4.5.1版本
首先試驗(yàn),單獨(dú)運(yùn)行HelloQT可以。


因?yàn)橐话闱度胧皆O(shè)備上都是在framebuffer的方式,在X11上就是用qvfb來(lái)模擬framebuffer的。
我想讓他跑在qvfb窗口:

#qmake -project
# qmake
# ./qvfb &      
(此時(shí)出現(xiàn)qvfb窗口)
#./HelloQt -qws
(此時(shí)單獨(dú)出現(xiàn)HelloQT窗口,不在qvfb窗口內(nèi))


關(guān)掉 qvfb窗口,HelloQT窗口還在,也就說(shuō)他們是分開(kāi)的。

請(qǐng)問(wèn)為什么不能加載進(jìn)qvfb窗口呢?

備注-------------------------------
QMake version 2.01a
Using QT version 4.5.0 in /usr/lib
qmaklink  /usr/bin/qmake-qt4

./configure -qt-gfx-qvfb  -qt-kbd-qvfb -qt-mouse-qvfb進(jìn)行配置 可解決



暈了,你跑的肯定是X11的應(yīng)用唄。
要跑QtEmbedded的應(yīng)用才會(huì)跑到qvfb里啊。(正解)


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用qmake生成的第一個(gè)qt程序(linux)
ubuntu10.10建立QT開(kāi)發(fā)環(huán)境圖文詳解
Qt: Ubuntu10.04安裝Qt embedded x86 + qvfb開(kāi)發(fā)環(huán)境
qt-configure-arm
QT學(xué)習(xí)之二:Qt命令模式下建立編譯的第一個(gè)例子
Qt
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服