VS生成动态链接库dll

VS2017生成动态链接库dll

一、概念

  1. 动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 “.drv”(旧式的系统驱动程序)。
  2. 举个例子:如果你比较熟悉Java,你可以把动态链接库dll理解成Java里面的依赖包jar文件,都是为了程序代码可以复用。一般jar依赖包中会提供方法调用,同样dll中也一样是提供了函数(方法)调用。

二、实操

1.编译dll:

  1. 新建 动态链接库(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为例:

  1. 在需要调用代码中的编写以下代码:
#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. 程序执行结果:
在这里插入图片描述

发布了23 篇原创文章 · 获赞 6 · 访问量 1580

猜你喜欢

转载自blog.csdn.net/pentiumCM/article/details/103702205