Qt下如何创建多工程项目(包含创建和使用动态库)

引言

本文的编写目的是希望读者可以学会:
1、在Qt下创建多工程项目;
2、创建编写的动态库程序;
3、集成使用第三方或自己编写的动态库;
4、对qmake和.pro文件有初步的认识。
下面开始吧!

多工程项目

应用程序在向多进程多动态库方向发展。多工程项目听着很高大上,其实和创建正常的单进程项目一样的简单。区别仅在于创建工程类型的选择和重复创建工程的次数不同。
在Qt下创建多工程的步骤如下:

  1. 点击菜单栏“文件”–>“新建文件或项目”–>“其它项目”–>“子项目目录”–>一路确定;
  2. 右击创建好的目录项目–>“新建子项目”–>选择创建 Widgets Application、Console Application或C++库项目;
  3. 重复步骤2,重复几次即加入了多少个工程项目。

这种多进程工程好处很多,至少在编程时,逻辑和条理更为清晰,系统耦合性更低。比如可以把守护进程、工具库和主界面进程分别放在三个工程中,每个进程相互独立,不影响主进程的稳定性,进程崩溃也没关系,可以通过守护进程去自动启动。
下图中ZRFrame工程包含了三个子项目,守护进程WatchExe、主界面框架ZRFrame、工具库ZRQtLibrary.
Qt下如何创建多工程项目(包含创建和使用动态库)_第1张图片

创建动态库程序

动态库程序的输出是.lib和.dll文件,可以实现纯C++的一些算法方法,也可以是带信号槽的界面。由于动态库的目的是供其它进程方便的使用,故只需编译后即可生成,比一般的应用程序简单一些。
动态连接库也叫做共享库,创建步骤如下:

  1. “新建项目”–>“Library”–>“C++库”;
  2. 在源文件和头文件中编写函数即可。

创建很简单,但有写地方必须要说明一下,不然使用起来可能会遇到问题。
1)在.pro文件中设置输出库文件的路径。
多工程项目中,最好在.pro文件中加入生成库路径:DESTDIR = …/bin,这句话表示把库文件生成在目录的上级的bin文件下中(bin文件不存在会自动创建),这样其它工程使用库的时候从这个目录下取即可。
2)生成带信号槽界面的库程序
由于界面、信号槽均与moc文件有关,需要把xx_global.h中的Q_DECL_IMPORT字符删去,这样调用此dll的程序会自己生成moc文件,否则调用动态库时会报“C2491:xx::staticMetaObject:不允许dllimport静态数据成员”的错误。

调用动态库

调用动态库需要三类元素:头文件、.lib文件和.dll文件,让调用的工程知道这三类文件的位置即可,一般可以通过修改调用工程程序的.pro文件实现。步骤如下:

  1. pro文件中添加LIBS属性: LIBS += -Lxx -lXX,其中-L后面是库文件的目录,-l后面是.lib文件的名称,名称不要带有后缀。
  2. pro文件中添加库的头文件:INCLUDEPATH += $$PWD/XX,这里设置了库文件头文件所在的文件夹。
  3. 在需要调用动态库的类中include头文件,即可正常使用库中的类和方法了。

Pro文件

Qt中用qmake工具对pro文件进行编译,生成makefile文件,之后再进行make操作。
DESTDIR参数表示生成应用程序的放置目录;
LIBS参数表示需要导入的库文件的路径和名称;
INCLUDEPATH参数表示程序编译时依赖的相关路径。

结束语

本文的配图非常的少,可能不太利于读者的理解,但每句话都是作者查询各种资料并实践验证通过后的总结,相信可以帮助到一部分的读者,欢迎和我讨论交流。

你可能感兴趣的:(Qt)