qt编译错误汇总
0.预备知识:编译-运行一个c/c++程序时,编译器只默认的去连接c 库,而很多的库不是标准库
1.linux下#inlude 命令默认头文件搜索路径为/usr/include,qt编程要用到的库qapplication库在usr/lib/qt-3.1/include下所以必须要用I增加路径。如g++ -hello hello.cpp –I/usr/lib/qt-3.1/include 。-I表示除了收索标准库,还要收索指定的额外头文件路径。
2.linux下的库,动态库为.so文件静态库为.a文件,编译运行时系统默认搜索的库为/usr/lib和/lib库。
linux下C库在/lib/libc.so.6路径下。
3.编译qt程序时要加上g++ -lqt …. lib库(相当于函数库集);
-I:表示头文件额外搜索路径
vim命令的作用是-L:表示要额外lib库搜索路径。
-l:表示表示指定具体的要连接(用到)的库(–lqt表示连接qt库)(qt不在默认lib库路径下,而在/usr/lib/qt-3.1/lib下,所以必须额外指定)
4.为了简化编译时的指定路径和库的麻烦,可以设置环境变量:CPLUS_INCLUDE_PA TH:设置头文件搜索路径。
例如:export CPLUS_INCLUDE_PA TH=/usr/lib/qt-3.1/include //
LD_LIBRARY_PA TH:设置动态库搜索路径。
例如:export LD_LIBRARY_PA TH =/usr/lib/qt-3.1/lib //注意qt比较特殊直接用LIBRARY_PAHT;
在终端下输入env 和set命令可以显示环境变量。
5.qt下编译可用简便方法
运行qmake –project 产生一个pro工程文件。
运行qmake 产生Makefile
运行make 产生可执行程序
6.查一个文件用命令:which qmake
7. qwidget.h是可视化窗口类。
8.编译常见错误:undefined reference to….没到实现函数,相当于有头文件但没有具体实现里面的函数。
9、qt4的安装用configure –no-openssl ……yes
10、当用到槽的时候由于c++中没有槽的概念,就要用moc进行处理生成c++文件
qmake进行编译qt程序时的执行过程(以原程序myslot.cpp为例):g++ -c –o myslot.o myslot.cpp
moc myslot.h –o moc_myslot.cpp
g++ -c –o moc_myslot.o moc_myslot.cpp
g++ -o 3-2 myslot.o moc_myslot.o –lqt
OS: ubuntu 8.04 kernel 2.6.24-21-generic GCC:gcc 版本 4.2.4 qt:/home/qt/qt-x11-2.3.2
qte:/home/qte/qte-2.3.2-new
******************1st Error******************************在包含自kernel/qpsprinter.cpp:97 的文件中: kernel/qt_x11.h:65:22: 错误:X11/Xlib.h:没有该文件或目录kernel/qt_x11.h:71:23: 错误:X11/Xutil.h:
没有该文件或目录kernel/qt_x11.h:72:21: 错误:X11/Xos.h:没有该文件或目录kernel/qt_x11.h:73:23: 错误:X11/Xatom.h:没有该文件或目录kernel/qt_x11.h:84:34: 错误:X11/extensions/shape.h:没有该文件或目录kernel/qpsprinter.cpp: In constructor ‘QPSPrinterFont::QPSPrinterFont(const QFont&, QPSPrinterPrivate*)’:
kernel/qpsprinter.cpp:5195: 错误:‘XGetFontPath’在此作用域中尚未声明kernel/qpsprinter.cpp:5235: 错误:‘XFreeFontPath’在此作用域中
尚未声明make[3]: *** [kernel/qpsprinter.o] 错误1 make[3]:正在离开目录`/home/qt/qt-x11-2.3.2/src' make[2]: *** [src-mt] 错误2 make[2]:正在离开目录`/home/qt/qt-x11-2.3.2' make[1]: *** [src-mt] 错误2 make[1]:正在离开目录`/home/qt/qt-x11-2.3.2' make: *** [init] 错误2 -----------------------------------------------------------------
Reason: Need lib just as xlib .etc ---------------------------------------------------------------
Resolution: Install qt4-dev qt4-design ********************************************************
*******************2nd Error**************************** xml/qxml.cpp:1518: 警告:未使用的参数‘ret’/home/qt/qt-x11-2.3.2/include/qvaluestack.h: In member function ‘T QValueStack<T>::pop() [with
T = QMap<QString, QString>]’: xml/qxml.cpp:513: instantiated from here /home/qt/qt-x11-2.3.2/include/qvaluestack.h:57: 错误:不能从‘QValueListIterator<QMap<QString, QString> >’转换到‘const char*’,为实参‘1’(属于‘int remove(const char*)’) /home/qt/qt-x11-2.3.2/include/qvaluestack.h: In member function ‘T
QValueStack<T>::pop() [with T = QString]’: xml/qxml.cpp:2502: instantiated from here /home/qt/qt-x11-2.3.2/include/qvaluestack.h:57: 错误:不能从‘QValueListIterator<QString>’转换到‘const char*’,为实参‘1’(属于‘int remove(const char*)’) make[3]: *** [xml/qxml.o] 错误1 make[3]:正在离开目录`/home/qt/qt-x11-2.3.2/src' make[2]: *** [src-mt] 错误2 make[2]:正在离开目录`/home/qt/qt-x11-2.3.2' make[1]: *** [src-mt] 错误2 make[1]:正在离开目录`/home/qt/qt-x11-2.3.2' make: *** [init] 错误2 -----------------------------------------------------
Reason: 代码uestack.h:57this未被赋值-----------------------------------------------------
Resolution:
vim $QTDIR/include/qvaluestack.h &将remove( this->fromLast() );改为this->remove( this->fromLast() ); **********************************************************
***************************3rd Error***********************在包含自/usr/include/X11/Xft/Xft.h:41 的文件中,
从kernel/qt_x11.h:76,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论