Qt编程常见编译错误及解析实例



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