一、动态链接库的定义
动态链接库(Dynamic Link Library,DLL)是一个包含可由多个程序同时使用的代码和数据的库。通俗来讲,它就是一个仓库,提供一些可以直接拿来用的变量、函数或者类。
二、动态链接库的创建
1、打开VS2019选择创建新项选择动态链接库(DLL),点击下一步
2、配置项目名称后,点击创建
3、新建类,在新类中定义我们自己的函数
4、myClass.h中添加如下代码
#pragma once
#include <iostream>
/*如果定义了宏就使用__declspec(dllexport)
否则就默认为__declspec(dllimport)*/
#ifdef myClass
#define myClass_API __declspec(dllexport)
#else
#define myClass_API __declspec(dllimport)
#endif
//导出函数
myClass_API int Add(int a, int b); //加法函数
myClass_API int Sub(int a, int b); //乘法函数
//导出类
class myClass_API myClass
{
public:
int Mul(int a, int b); //乘法函数
int Div(int a, int b); //除法函数
};
5、myClass.cpp中添加以下代码
#include "pch.h"
#include "myClass.h"
int Add(int a, int b)
{
return a + b;
}
int Sub(int a, int b)
{
return a - b;
}
int myClass::Mul(int a, int b)
{
return a * b;
}
int myClass::Div(int a, int b)
{
return a / b;
}
6、点击生成->生成解决方案
7、在Release目录下可以看到生成的一个dll文件以及一个lib文件
三、动态链接库的调用
1、新建一空项目
2、将DllCreate.dll DllCreate.lib myClass.h拷贝到项目工程路径下面
3、添加myClass.h到项目中
4、属性—>链接器—>输入—>附加依赖项中添加我们拷贝过来的.lib文件
5、新建calltest.cpp,并添加以下代码
#include "myClass.h"
using namespace std;
int main()
{
int result1 = Add(1, 1);
int result2 = Sub(2, 1);
myClass myClassFun;
int result3 = myClassFun.Div(4, 2);
int result4 = myClassFun.Mul(2, 2);
cout << result1 << "_" << result2 << "_" << result3 << "_" << result4 << endl;
return 0;
}
6、生成解决方案后运行,输出以下结果表示调用成功。