动态链接库是一些编译过的可执行程序模块,包含代码、数据或资源,可以在应用程序或其他动态链接库中调用动态链接库的文件扩展名一般为 .dll,也可以是 .drv(设备驱动程序)、.sys(系统文件)和.fon(字体文件),下面我们就来聊聊关于动态链接库原理?接下来我们就一起去了解一下吧!

动态链接库原理(14.动态链接库编程)

动态链接库原理

1.动态链接库简介1.1 动态链接库

动态链接库是一些编译过的可执行程序模块,包含代码、数据或资源,可以在应用程序或其他动态链接库中调用。动态链接库的文件扩展名一般为 .dll,也可以是 .drv(设备驱动程序)、.sys(系统文件)和.fon(字体文件)。

DLL 应用广泛,可以实现多个应用程序共享代码和资源,是 Windows 程序设计中的一个非常重要的组成部分。

1.2 动态链接库工作原理

静态链接:在程序链接时将库中的代码复制到可执行文件中。

当多个同样的程序执行时,系统中保留了许多重复的代码副本,造成了内存资源的浪费。如果使用动态链接库,当建立应用程序的可执行文件时,则不必将 dll 链接到程序中,而是在应用程序运行时动态地装载 dll,装载时 dll 将被映射到进程的地址空间中。

因此,使用 dll 并不是把库代码复制出来,而是在程序中记录了函数的入口点和接口,在程序执行时才将库代码装入内存。所以,无论多少程序使用了 dll,内存中都只有该 dll 的一个副本。当没有程序使用它时,系统将它移出内存,减少了对内存和磁盘的要求。所以,使用 dll 的一个好处就是可以节省系统资源。

动态链接库虽然属于 windows 可执行文件,但它不是 exe 文件,不像 exe 文件那样可以直接执行,dll 文件中包含可执行代码是由 exe 文件调用的。

1.3 动态链接库的特点

动态链接库最大的特点就是它的代码在运行期间被动态地链接至调用它的程序中,不用重复编译或链接,一旦装入内存,dll 函数可以被系统中的任何正在运行的应用程序使用,它们共享该 dll 函数的单一拷贝。

dll 中一般由程序通用的过程、函数等构成,当然,也可以包含各种资源。使用 dll 的 exe 在编译时,编译器将把程序中用到的 dll 文件中的例程(函数、过程)、数据(图片、字符串等资源)等建立一个列表放在 exe 中。也就是说,在创建 windows 应用程序时,链接过程并不把 dll 文件中的例程链接到程序上,只有当 exe 文件运行时并需要调用一个 dll 文件中的函数或过程时,windows 才在 dll 中寻找被调用函数并把它的地址传递给调用程序。

dll 独立于编程语言,也就是说,用某种语言编写的 dll 文件可以被其他语言调用。

对 dll 文件的升级和更新是和应用程序无关的,任何升级都可以自动传播到所有调用该 dll 的应用程序中。

,