目录
1.使用Qt Creator 生成动态库
新建项目,选择Library --> C++ 库
选择共享库,项目名称为 TestDynamic
构建套件选择 MingGw64-bit
选择所需要的模块,直到新建项目完成
项目结构如右图1所示,包括 TestDynamic.pro 、testdynamic.h 、testDynamic_global.h和 testdynamic.cpp文件
在 testdynamic.h 文件中声明新函数 Sum(),在testdynamic.cpp中进行实现
testdynamic.h
testdynamic.cpp
,点击构建,会在项目的构建目录下生成 .a 文件 .dll 文件 和 .o文件,到此为止,就可以在其他项目中进行动态库文件的调用了。
2.使用第一步生成的动态库
新建一个项目,名称为MyTest
在项目源码文件目录下,新建 include 文件夹 和 lib 文件夹,分别用于存放 调用库所需的头文件和 .DLL文件
将第一步生成的 TestDynamic .dll 文件复制到 新建的 lib文件夹下,将testdynamic.h 、testDynamic_global.h复制到 新建的 include 文件夹下
在MyTest.pro文件中添加 如下语句
加了第一句,新项目就可以使用 include 文件中的头文件,第二句是将库添加进来
在main.cpp文件中添加 testdynamic.h 文件,创建动态 库中类对象,并调用相关函数。
构建运行该项目,运行结果如下
通过调用动态库函数中的函数进行求和,得出正确的结果!
3静态库的生成与调用
-
- 1.新建项目 选择 Library --> C++库,项目类型选择静态链接库。
- 2.项目结构如图:
- 3.在 staticLib.h文件中声明函数Sum(),求两数之和。
- 4.在 staticLib.cpp文件中实现该函数。
- 5.点击构建,即可在目标生成目录下生成 .a 文件和 .o文件,如图:
- 6.将新生成的.a文件放在 目标程序目录中下的 lib文件夹,将staticLiv.h文件放在目标程序目录下的 include文件夹下
- 7.在目标程序 MyTest.pro 文件中添加 LIBS += -L$$PWD/lib -llibstaticlib
- 8.在主程序中加入 头文件并使用该库:
- 9.运行得出结果如下:
-
4.静态库与动态库的区别
-
4.1静态库特点及优缺点
- 一般名为 libxxx.a, windows下一般为libxxx.lib
- 使用静态库时,函数库的所有数据都会整合到你的项目程序中。
- 优点
- 不在需要其他外部函数库的支持,因为所有的函数都被编译进去了。
- 适合模块化和分工合作。
- 库函数也可以重用。
- 缺点
- 程序编译之后的文件会比较大。
- 静态库发生小改动,需要重新编译整个项目程序。
-
4.2动态库特点及优缺点
- 一般为 libxxx.so ,windows下会生成一个.Dll文件。
- 使用动态库时,当程序执行到相关函数时,才会调用函数库中的函数。
- 优点
- 程序编译之后的可执行文件体积文件较小。
- 动态库的改变不用重新编译链接程序,所以库的修改和升级比较方便。
- 多个程序可以共享内存中的同一份库文件,节省资源。
- 缺点:
- 由于库文件没有被编译进程序中,所以程序不是一个自完备的程序,运行必须提供相应的库。
-