VS2017生成动态链接库dll
一、概念
- 动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 “.drv”(旧式的系统驱动程序)。
- 举个例子:如果你比较熟悉Java,你可以把动态链接库dll理解成Java里面的依赖包jar文件,都是为了程序代码可以复用。一般jar依赖包中会提供方法调用,同样dll中也一样是提供了函数(方法)调用。
二、实操
1.编译dll:
- 新建 动态链接库(DLL) 项目,如箭头1处
2. 在C++的.cpp文件中输入想要被调用的函数:
#include "stdafx.h"
int add(int a, int b)
{
return a + b;
}
如图:
3. 在头文件中将刚刚函数声名为导出函数,就是说这个函数要被其他程序调用,即作为DLL的一个对外函数接口:
#ifndef _CREATDEMO_H
#define _CREATDEMO_H
extern "C" _declspec(dllexport) int add(int a, int b);
#endif
如图:(你也可以新建一个空白的头文件,将导出函数的声明写在新的头文件里面)
4. 点击生成解决方案,便可生成需要的动态链接库DllTest.dll
2.调用动态链接库DLL
以刚刚生成的DllTest.dll为例:
- 在需要调用代码中的编写以下代码:
#include "pch.h"
#include <iostream>
#include <Windows.h>
using namespace std;
typedef int(*_DLLAdd)(int a, int b); //用函数指针指代要调用的函数;
HMODULE hm = LoadLibrary(L"F:/develop_code/C++/dll/DllTest/DllTest/Debug/DllTest.dll"); //找到对应dll;
int main()
{
if (hm != NULL) {
_DLLAdd add = (_DLLAdd)GetProcAddress(hm, "add"); //add对应于上面头文件里面声明的函数名
cout << add(100, 200); //调用
}
}
如图:
2. 程序执行结果: