Qt编程常见编译错误及解析实例。预备知识:编译-运行一个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:表示头文件额外搜索路径
-L:表示要额外lib库搜索路径。
-l:表示表示指定具体的要连接(用到)的库(–lqt表示连接qt库)(qt不在默认lib库路径下,而在/usr/lib/qt-3.1/lib下,所以必须额外指定)
4.为了简化编译时的指定路径和库的麻烦,可以设置环境变量:
CPLUS_INCLUDE_PATH:设置头文件搜索路径。
例如:export CPLUS_INCLUDE_PATH=/usr/lib/qt-3.1/include //
LD_LIBRARY_PATH:设置动态库搜索路径。
例如:export LD_LIBRARY_PATH =/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