本文使用的开发工具是VS2019.

一、动态库的创建步骤

1.1创建工程

1、打开VS2019创建动态库项目。

ios 动态库生成_头文件


ios 动态库生成_动态库_02


2、创建完成后编译器会为我们自动添一些源文件和头文件。将编译器创建的源文件和头文件删除。

3、创建自己的源文件(DllTest.cpp)和头文件(DllTest.h)。

ios 动态库生成_预编译头_03


4、取消预编译头。在“项目->属性->C/C+±>预编译头->预编译头”的值设置为“不使用预编译头”。

ios 动态库生成_预编译头_04

1.2导出函数

如果动态库中的函数不导出,那么其他项目就不能调用动态库中的函数。也就是说其他项目只能调用动态库中导出的函数,动态库中没有导出的函数不能被其他项目调用。导出动态库的方法有多种,下面分别介绍每种导出方法:

1.2.1动态库导出方法一

使用__declspec(dllexport)导出函数。

ios 动态库生成_ios 动态库生成_05

1.2.2动态库的导出方法二

使用模块定义文件导出

ios 动态库生成_头文件_06

1.3动态库的使用

动态库制作完成后,在其他项目中使用时需要三个文件,这三个文件分别是:头文件(DllTest.h),lib文件(DllTest.lib),dll文件(DllTest.dll)

1.3.1隐式调用

隐式调用的步骤如下:

1、包含创建动态库的头文件(DllTest.h)

ios 动态库生成_动态库_07


2、在“附加库目录”中添加.lib文件的路径

ios 动态库生成_ios 动态库生成_08


3、加载.lib文件(DllTest.lib)

ios 动态库生成_头文件_09


4、整个调用代码如下:

ios 动态库生成_动态库_10

1.3.2显示调用

1、包含Windows.h文件,因为加载库的函数(LoadLibrary)是windows API。

ios 动态库生成_预编译头_11


2、加载动态库。路径可以是绝对路径和相对路径。

ios 动态库生成_动态库_12


3、定义函数指针

ios 动态库生成_头文件_13


4、获取函数指针

ios 动态库生成_动态库_14


5、动态库中函数调用

ios 动态库生成_头文件_15


6、释放动态库

ios 动态库生成_预编译头_16


7、显示调用的整个代码如下:

ios 动态库生成_ios 动态库生成_17