一、动态库的封装
1.创建工程
首先创建一个qt工程(这里我采用的是ui工程)

这里选择Widget工程

名字取一个和动态库相关的即可,我这里取的UIDLL

这里选择CMake

这里我选择命名为Dynamic

kits采用Qt 5.14.2 GCC 64bit,之后直接下一步即可。
2.新建文件
新建global_define.h、interface.h以及interface.cpp文件(这里没有main.cpp文件是因为我在cmake中去掉了)


global_define.h文件中定义如上所示,UIDLL_SHARED_EXPORT为我们要使用的导出宏

之后在CMakeList.txt中添加add_library,其中的UIDLL表示导出的动态库名称,SHARED表示导出的是动态库,之后则是导出动态库所有的依赖文件。如果文件太多可以选择使用下述字段
FILE(GLOBAL_RECURSE CPPS RELATIVE ${CMAKE_SOURCE_DIR} *.cpp *.h *.ui)
之后在写add_library的时候就可以用下述语句了
add_library{UIDLL SHARED
${CPPS}
}
修改完CMakeList.txt后,在interface.h和interface.cpp中分别写如下代码:


之后直接构建即可。构建完成会在生成目录生成.so文件,如下所示

二、动态库的调用
1.创建调用DLL的工程
这块和上面创建CMake工程一样
2.调用dll
首先在调用dll的工程下创建下面两个文件夹

然后,将dll工程中的interface.h和global_define.h文件放进去

此外,将生成的.so文件放到lib文件夹和生成目录中


之后,在CMakeList.txt文件中加上下述代码

之后,在需要的地方引入interface.h头文件即可。







![如何在内网中与阿里云服务器进行文件传输?[2024详细版]](https://i-blog.csdnimg.cn/direct/3ce837044dc44cc7a2aaf71b49918505.png)












