C-3
2022-06-11 本文已影响0人
x92n
DLL-动态链接库
lib-静态链接库
编译成obj文件之后,将多个obj文件连接成lib文件。当程序用到lib里面的函数时,只需要指定函数名称,当链接的时候,链接器会自动到lib文件中找函数的实体,把它链接过来,叫做静态链接。
静态链接的缺点是浪费内存和磁盘空间,因为用多少次静态库的代码,就会包含多少分同样的代码。
因为Windows是多任务的,多个进程可能用同一个函数,所以用DLL-动态链接库。
DLL链接的时候,代码不会插到代码中去,在程序运行的时候,才会把DLL中的代码加载到内存中,供程序使用。
物理内存中只保留一份动态链接库的代码,当多个程序使用,使用分页机制将这份代码映射到不同进程的虚拟进程空间里。
函数中要使用动态链接库,必须包含DLL的库名和函数名
一个文件是否为动态链接库,取决于文件结构,系统里面包含公用代码的模块,不管后缀名是什么,都可以是DLL
DLL映射到程序的地址空间里面的,可以看成和程序是一体的,DLL可以使用程序的资源,程序可以使用DLL的资源,所以可以把DLL注入到程序中。
DLL如何写?
在vs2019中,右击项目,点属性----配置属性----常规----配置类型---改为dll
#include <Windows.h>
_declspec(dllexport) void nai(){
MessageBoxA(0, "naizi", "naizi", 0);
}