动态链接库
动态链接库,Dynamic Link Library或者Dynamic-link Library,DLL,是一个模块,其中包含其他模块 (应用程序或DLL) 可以使用的函数和数据。
DLL可以定义两种类型的函数,导出函数和内部函数,导出函数旨在由其他模块调用,以及定义它们的DLL内部调用,内部函数通常仅用于定义内部的DLL调用,尽管DLL可以导出数据,但其数据通常仅由其函数使用,但是,无法阻止另一个模块读取或写入该地址。
DLL提供了模块化应用程序的方法,以便可以更轻松地更新和重复使用其功能, 当多个应用程序同时使用相同的功能时,DLL也有助于降低内存开销,尽管每个应用程序都收到自己的 DLL 数据副本,但应用程序共享DLL代码。
Windows API
Windows API,应用程序编程接口,是程序与处理器接口的命令集,实现为一组DLL,使用Windows API的任何进程都使用动态链接。
Visual Studio 2022的创建与使用创建动态链接库项目
1、新建项目,动态连接库(DLL)项目
2、填写项目名称和解决方案名称
3、添加头文件pch.h和源文件pch.cpp
pch.h
#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"
#endif //PCH_H
//ifdef,如果IMPORT_DLL已经定义过了,则执行else前面的,如果未定义,则执行else后面的
#ifdef IMPORT_DLL
#else
//允许将其给外部调用
#define IMPORT_DLL extern "C" _declspec(dllIMPORT)
#endif
IMPORT_DLL int max_number(int a, int b);
IMPORT_DLL int min_number(int a, int b);
pch.cpp
// pch.cpp: 与预编译标头对应的源文件
#include "pch.h"
// 当使用预编译的头时,需要使用此源文件,编译才能成功。
int max_number(int a, int b)
{
if (a >= b) {
return a;
}
return b;
}
int min_number(int a, int b)
{
if (a < b) {
return a;
}
return b;
}
4、选中项目,右键,生成,生成文件Dll1.dll