1、前言
dll文件是啥,就不作过多赘述了。现在直接教大家如何创建与使用dll文件。
本文基于windows系统,使用的编译相关工具为visual studio 2019。
2、创建dll
2.1 创建dll工程
首先打开visual studio,然后选择创建新项目,在搜索框中输入dll,然后选择下面的动态链接库(DLL)即可,然后点击下一步。
在配置新项目这一步,可以根据自己的需要,设置项目名称、位置等即可。设置前好之后点击创建即可。
2.2 删除多余的文件并添加源文件
在创建的dll解决方案中可以看到,系统已经预生成了一些头文件和源文件。这些是系统预生成的,本身与创建dll关系不是很大,为了帮助大家理解。可以暂时先移除这些文件。
移除这些文件的方法是,依次在每个文件上右键,然后选择移除。
这样就可以移除每个文件
移除完之后,源文件、头文件目录均为空,然后就可以添加文自己的文件了。
首先在头文件目录上右键,然后选择添加 - ->新建项
然后选择标头,然后输入标头文件名即可。
然后用同样的方法,在源文件目录上右键,然后选择添加 -> 新建项
然后选择c++源文件,然后输入源文件名。
操作完成之后,可以看到头文件和源文件目录下面分别各有一个文件。
2.3 编写源文件
首先编写头文件,内容如下:
// math.h
#ifdef MYDLL_EXPORTS
#define MATH_API __declspec(dllexport)
#else
#define MATH_API __declspec(dllimport)
#endif
MATH_API int Add(int a, int b);
MATH_API int Sub(int a, int b);
这里需要做一个简单的说明:
由于这个头文件,dll本身源文件(math.cpp)以及使用dll的文件都会使用,因此需要一个导出接口和一个导入接口。
对于dll文件本身来说,它需要一个导出接口,这样这个dll文件才能被其它程序调用;
对于其它程序来讲,它需要一个导入接口,这样就可以导入dll文件并使用了。
为了到达这个目的,通过条件编译的方式,在本工程中会自动定义一个宏MYDLL_EXPORTS, 这样dll文件项目本身就是导入接口,由于在其他项目中没有定义宏MATH_EXPORTS,这样就会使用导入接口。
下面接着编写源文件,源文件内容如下:
// math.cpp
#include "math.h"
int Add(int a, int b) {return a + b;
}
int Sub(int a, int b) {return a - b;
}
2.3 生成dll文件
在生成dll之前,还需要明确生成的版本,到底是release版本,还是debug版本,到底是x64,还是x86。
这里本身可能影响不大,但是dll的版本和使用dll的版本一定要一致。比如生成dll使用的debug/x64,那么使用dll文件的项目,也只能是debug/x64。
然后在myDll解决方案上右键,点击生成即可。
不出意外的话,生成结果是失败的,并且提示:
这是因为我们在步骤2.1中删除了一些文件。
这是需要删除相关预编译头。具体做法如下:
在myDll解决方案上右键 -> 属性,在预编译头选择不使用预编译头。
设置好之后,然后重新生成,就可以在相关目录下面看到生成的dll文件了。
至此dll文件就生成成功,然后其它项目就可以调用该dll文件了。