热点:

    DLL文件是什么意思?动态链接库文件详解

      [   原创  ]   作者:
    收藏文章 暂无评论

    动态链接库(DLL,Dynamic Link Library)文件是一种软件文件类型,也被称为应用程序扩展。在Windows系统中,许多应用程序并非以单一完整的可执行文件形式存在,而是被拆分成若干相对独立的动态链接库,即DLL文件,并存储在系统中。当用户运行某个程序时,相应的DLL文件会被加载和调用。一个应用程序可以同时使用多个DLL文件,而同一个DLL文件也可能被不同的应用程序共享,这种类型的DLL文件被称为共享DLL文件。这种方式有助于减少代码重复,提高资源利用效率。

    1、 DLL文件中存储了各类程序函数(子过程)的实现代码。当程序调用某个函数时,需先加载DLL文件,获取函数地址后进行调用。使用DLL的优势在于,程序运行时无需加载全部代码,仅在需要特定函数时才从DLL中提取,这不仅提高了效率,还能有效减小应用程序的体积。

    2、 在 Windows 系统下,每个应用程序都能调用该 DLL 提供的功能以实现打开对话框,这有利于代码复用和内存的高效利用。

    3、 借助 DLL,程序能够以模块化方式构建,由相对独立的组件构成。比如,一款记账软件可按模块出售,并在运行时根据安装情况将各模块动态加载到主程序中。由于各模块相互独立,程序加载速度更快,且仅在需要时加载对应模块,从而提高效率。

    4、 此外,更新可更便捷地应用于各模块,且不会干扰程序其他部分。比如,你有一个计算工资的程序,税率每年都会变动。如果将这些更改隔离在动态链接库(DLL)中,就无需重新编译或安装整个程序即可应用更新。

    5、 动态链接库(DLL)的调用方式主要分为静态调用和隐式调用两种。这两种方式各有特点,适用于不同的开发场景。

    6、 静态调用方式是由编译系统负责完成对 DLL 的加载与卸载操作。具体来说,在应用程序启动时,编译系统会自动加载所需的 DLL;当程序结束运行时,系统会检查是否有其他程序仍在使用该 DLL。如果有,则 Windows 会维护一个使用计数器,每结束一个相关程序,计数器减 1。只有当所有依赖该 DLL 的程序都停止运行后,系统才会释放该 DLL 占用的资源。这种方式简单易用,适合满足一般性需求,但灵活性较低,无法应对复杂或特殊场景。

    7、 隐式调用则需要将生成动态链接库时产生的 .LIB 文件添加到应用程序的项目中。在使用 DLL 提供的功能时,只需声明相关函数即可,无需手动调用 `LoadLibrary()` 和 `FreeLibrary()`。当程序员创建一个 DLL 文件时,链接器会自动生成一个对应的 LIB 导入文件。这个 LIB 文件记录了每个 DLL 导出函数的符号名及其可选的标识号,但并不包含实际的代码内容。它作为 DLL 的替代品被编译进应用程序中。

    8、 在采用静态链接方式进行编译时,应用程序中的调用函数会与 LIB 文件中的导出符号进行匹配,最终将这些符号或标识号嵌入生成的 EXE 文件中。此外,LIB 文件还包含了对应的 DLL 文件名(但不包括完整路径),链接器会将其存储在 EXE 文件内部。当应用程序运行并需要加载 DLL 时,Windows 会根据这些信息找到并加载 DLL,然后通过符号名或标识号实现对 DLL 函数的动态链接。

    9、 值得注意的是,所有被应用程序调用的 DLL 文件都会在 EXE 文件加载时一并加载到内存中。在此过程中,可执行程序通过链接一个包含 DLL 输出函数信息的导入库文件(即 .LIB 文件)来实现功能调用。操作系统会在加载可执行程序时自动加载相应的 DLL。对于开发者而言,调用 DLL 中的输出函数与调用程序内部其他函数的方式完全一致,直接通过函数名即可完成调用。这种机制简化了开发流程,同时确保了动态链接的高效性和便利性。

    10、 动态调用方式是通过编程人员利用 API 函数加载和卸载 DLL 来实现对动态链接库的调用。这种方式虽然使用起来相对复杂,但能够更高效地利用内存资源,因此成为开发大型应用程序时的重要手段。

    11、 显式调用是指在应用程序中通过调用 `LoadLibrary` 或 MFC 提供的 `AfxLoadLibrary` 函数,将自定义的动态链接库显式加载到程序中。动态链接库的文件名作为上述两个函数的参数传递。加载完成后,可以使用 `GetProcAddress()` 函数获取目标函数的地址。至此,引入的函数就可以像应用程序内自定义的函数一样被调用了。在应用程序退出前,需要通过 `FreeLibrary` 或 MFC 提供的 `AfxFreeLibrary` 函数释放已加载的动态链接库。

    12、 此外,也可以直接调用 Win32 的 `LoadLibrary` 函数,并将 DLL 的路径作为参数传入。`LoadLibrary` 函数会返回一个 HINSTANCE 句柄,该句柄将在后续调用 `GetProcAddress` 函数时使用。`GetProcAddress` 函数的作用是将符号名或标识号转换为 DLL 内部的具体地址。通过这种方式,程序员可以灵活决定 DLL 文件的加载时机以及是否加载。显式链接允许在运行时动态确定加载哪个 DLL 文件。

    13、 对于使用动态链接库的应用程序,在实际使用之前必须先通过 `LoadLibrary` 加载 DLL,从而获得一个 DLL 模块的句柄。然后,通过调用 `GetProcAddress` 函数获取导出函数的指针。在程序退出前,必须通过 `FreeLibrary` 卸载 DLL 以释放相关资源。这种机制不仅提供了更高的灵活性,还能够有效管理内存,避免不必要的资源占用。

    14、 DLL文件因其占用内存小、便于编辑等特点,常被用作电脑病毒的载体,但无法独立运行。动态链接库通常不能直接执行或接收消息,它是一些独立文件,包含可被可执行程序或其他DLL调用的函数,以完成特定任务。只有当其他模块调用动态链接库中的函数时,这些函数才会发挥作用。

    soft.zol.com.cn true https://soft.zol.com.cn/1000/10008228.html report 4334 动态链接库(DLL,Dynamic Link Library)文件是一种软件文件类型,也被称为应用程序扩展。在Windows系统中,许多应用程序并非以单一完整的可执行文件形式存在,而是被拆分成若干相对独立的动态链接库,即DLL文件,并存储在系统中。当用户运行某个程序时,相应的DLL文件...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    DLLSuite(dll下载修复)

    更新时间:2023年08月18日

    用户评分:5 | 1人点评

    软件类型:免费软件

    软件语言:简体中文

    软件资讯文章推荐

    DLLSuite(dll下载修复)
    • 更新时间:2023年08月18日
    • 软件大小:15.7MB
    • 软件分类:DLL文件
    • 语言种类:简体中文
    • 软件评级:1 人点评