C++动态链接库介绍
Dynamic Link Library(DLL)是微软在Windows系统中实现共享函数库概念的一种方式,常见的后缀为“.dll”,其优点是不会包含在程序编译文件中,而是在运行过程中调用,并且可以被多个程序公用,不需要在每个程序中都附加上相同的代码。
生成C++动态链接库
我的运行环境是Win10+VS2017,打开vs2017后,新建空的C++项目
假设我要创建一个名为math1.dll(因为C++本身就有一个叫math.h的数学方法库,不能与其重名,所以加了数字1)的动态链接库,并且包含在GodricDll的命名空间中,编写一个math1的类,其中包含一个构造函数math1,可以初始化该类的实例,包含一个求两个数和的方法sum,以及两个私有变量a和b。
首先在资源管理器的源文件处新建名为math1.cpp的空白源文件,在头文件处添加名为math1.h的空白头文件。
头文件的内容如下:
1 |
|
头文件math.h中从#ifndef MATH1_H到最后的#endif,是为了防止头文件被重复加载,#ifndef MATH1_API是为了防止宏重复定义,可以看到代码中间部分包括在godricdll命名空间中,定义了math1类。
源文件包含类的实现,其内容如下:
1 |
|
头文件和源文件已经编写完成,设置好debug或者release,以及32或64位,还需要将生成类型由.exe转为.dll,右键点击myDll项目,打开属性,配置属性->常规->项目默认值->配置类型,将配置类型更改为”动态库(.dll)”。
这样就可以生成解决方案了,生成完成后可以在debug或release中找到以下文件:
然后新建一个项目叫importDll,可以是控制台程序,在源文件出添加importDll.cpp文件,其源码如下
1 |
|
当然还需做一些配置将math1.h、math1.lib及math1.dll放到正确的文件夹,来调用math1.dll。
右键importDll,选择”属性”
配置属性->VC++目录->包含目录(包含放置math1.h文件的文件夹)和库目录(包含math1.lib文件的文件夹);
配置属性->链接器->输入->附加依赖项(包含math1.lib)
将math1.dll文件放入importDll的debug或者release文件夹中
至此配置结束,可以运行importDll了
上面就是importDll源码及运行结果。