前言
这篇文章主要记录使用QTcreator创建C++动态库的流程,仅供参考。
环境:linux deepin20 + Qt 5.8.0
一、什么是动态库?有何作用?
接下来简单介绍一下动态库及其作用:动态库是一种在程序运行时才被加载到内存中的共享库。
动态库,也称为动态链接库(DLL,Dynamic Link Library),是一种可以在程序运行时动态加载的代码和数据文件。与静态库不同,动态库并不在程序编译链接时将代码“拷贝”到可执行文件中,而是在程序运行时根据需要加载相应的代码和数据。这样做的好处是:
节省内存:多个程序可以共享同一份动态库的代码和数据,减少了内存的占用。
便于更新:当动态库更新时,只需要替换库文件,而不需要重新编译依赖该库的所有程序。
减少部署成本:程序发布时,只需携带必要的动态库文件,而不是整个程序的所有依赖,这样可以减小安装包的大小。
提高程序启动速度:因为动态库是在程序运行时才加载的,所以可以加快程序的启动速度。
支持模块化设计:动态库的使用使得程序可以更加模块化,各个功能可以独立更新和维护。
总的来说,动态库是现代软件开发中常用的一种技术,它使得程序的开发、维护和部署都变得更加灵活和高效。在Windows操作系统中,动态库通常以.dll为扩展名;在Linux和macOS系统中,则以.so(共享对象)或.dylib为扩展名。
二、使用QtCreator创建步骤
1.创建库
新建Qt工程时选择C++库,后续选项根据需求进行选择
创建成功会得到这样一个目录结构
这里我们只需要mylib.c 和mylib.h,其余无关的mylib_global.h可以删除
删除头文件同时许删除该文件在其他文件中的引用
头文件中定义的空类,不会用到,所以一并删除
2.添加需要加入动态库的函数
这里我定义了一个简单的fuc()
3.构建动态库
这里需要点击 构建 ,不要构建并运行,因为没有main函数
4.生成动态库文件
构建成功后会在,活动目录下生成如下三个软连接和个动态库本体
5.创建项目进行测试
这里我创建了一个QTapplication项目,在里面进行测试
项目创建就是简单的QT项目创建方式,这里我的项目名为 test
5.1在工程目录下创建如下两个文件夹,用于存放头文件和动态库
5.2将创建好的动态库中的 mylib.h拷贝到 include文件夹中,将.so文件拷贝到lib文件夹中
5.3包含头文件和动态库路径,并调用库进行测试
在工程文件 test.pro 中添加如下两行
//头文件路径包含 INCCLUDEPATH += 头文件路径 //包含库 LIBS += -L 库文件目录 -l动态库名
进行调用并测试
显示输出结果成功,证明通过动态库调用func()成功,动态库创建成功。