[科普]DLL是什么

[科普]DLL是什么什么是 DLL 运行某一程序时 该程序的很多功能可能是由 DLL 提供的 例如 某些程序可能包含很多不同的模块 而该程序的每个模块都包含在 DLL 中并从中分发 使用 DLL 有助于促进代码的模块化 代码重用 内存的有效使用和减少所占用的磁盘空间 因此 操作系统和程序能够更快地加载和运行 并且在计算机中占用较少的磁盘空间 DLL 是一个包含可由多个程序同时使用的代码和数据的库 例如 在 Windows 操作系统中 Comdlg32DLL 执行与对话框有关的常见函数 因此 每个程序都可以使用该

什么是 DLL?

运行某一程序时,该程序的很多功能可能是由 DLL 提供的。 例如,某些程序可能包含很多不同的模块,而该程序的每个模块都包含在 DLL 中并从中分发。

使用 DLL 有助于促进代码的模块化、代码重用、内存的有效使用和减少所占用的磁盘空间。 因此,操作系统和程序能够更快地加载和运行,并且在计算机中占用较少的磁盘空间。

DLL 是一个包含可由多个程序同时使用的代码和数据的库。 例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。 因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。 这有助于促进代码重用和内存的有效使用。

通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。 例如,一个计帐程序可以按模块来销售。 可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。 因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。

此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。 例如,您可能具有一个工资计算程序,而税率每年都会更改。 当这些更改被隔离到 DLL 中以后,无需重新生成或安装整个程序就可以应用更新

DLL 的优点

  • 使用较少的资源
    当多个程序使用同一个函数库时,DLL 可以减少在磁盘和物理内存中加载的代码的重复量。 这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在 Windows 操作系统上运行的程序。
  • 推广模块式体系结构
    DLL 有助于促进模块式程序的开发。 这可以帮助你开发要求提供多个语言版本的大型程序或要求具有模块式体系结构的程序。 模块式程序的一个示例是具有多个可以在运行时动态加载的模块的计帐程序。
  • 简化部署和安装
    当 DLL 中的函数需要更新或修复时,部署和安装 DLL 不要求重新建立程序与该 DLL 的链接。 此外,如果多个程序使用同一个 DLL,那么多个程序都将从该更新或修复中获益。 当您使用定期更新或修复的第三方 DLL 时,此问题可能会更频繁地出现。

如果您不是开发人员,可能不关心下面的内容

开发DLL

在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。 这两种链接方法是加载时动态链接和运行时动态链接

  • 加载时动态链接
    在加载时动态链接中,应用程序像调用本地函数一样对导出的 DLL 函数进行显式调用。 要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。 当您这样做时,链接器将向系统提供加载 DLL 所需的信息,并在加载时解析导出的 DLL 函数的位置。
  • 运行时动态链接
    在运行时动态链接中,应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。 成功加载 DLL 后,可以使用 GetProcAddress 函数获得要调用的导出的 DLL 函数的地址。 在使用运行时动态链接时,无需使用导入库文件。

何时使用加载时动态链接以及何时使用运行时动态链接

方向 建议
启动性能 如果应用程序的初始启动性能很重要,则应使用运行时动态链接。
易用性 在加载时动态链接中,导出的 DLL 函数类似于本地函数。 这使您可以方便地调用这些函数。
应用程序逻辑 在运行时动态链接中,应用程序可以分支,以便按照需要加载不同的模块。 在开发多语言版本时,这一点很重要。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219335.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:48
下一篇 2026年3月17日 下午10:49


相关推荐

  • 【转载】轻松搞懂WebService工作原理

    【转载】轻松搞懂WebService工作原理

    2021年11月18日
    43
  • 宽度学习与深度学习中的时空转化问题

    宽度学习与深度学习中的时空转化问题ž在自然界中运动是绝对的,静止是相对的。这句话也说明了深度学习过去、现在、未来。由于我发现山东大学有个组和澳门大学陈俊龙团队的宽度学习、极限学习等。目前由于神经网络是黑盒研究、所以很多人利用反卷积和卷积可视化来解释这种微分和积分的编程,由于冗余和稀疏特性使用微积分或者差分求导数和偏导是必然。宽度学习文章和代码研究地址:http://www.broadlearning.ai在深度学习上目…

    2022年5月21日
    45
  • 分析开源项目[通俗易懂]

    分析开源项目[通俗易懂]手把手教你分析开源项目不知道代码怎么来的?代码跑不起来?项目对自己有帮助,不会模块化分析?任何一个开源项目,都可以让自己得到提升!这里以EL-ADMIN为例https://el-admin.vip/1、观察开源项目后端代码:前端代码:2、开源项目下载可使用zip下载,或者Git观察:用了哪些技术(springboot,vue,redis,)是否有数据库(mysql)你的环境是否匹配(Java,Maven,npm,nodejs,)通过了,然后再想办法运行3、跑

    2022年6月11日
    43
  • linux文件句柄数上限_怎么清除文件句柄

    linux文件句柄数上限_怎么清除文件句柄文章目录查看修改查看cat/proc/sys/fs/nr_open每个进程最大限制ulimit-n当前用户的当前shell最大限制(多个shell,每个都能到达最大限制)cat/proc/sys/fs/file-max系统级别最大限制记住前三个就好了cat/proc/sys/fs/file-nr:[root@izm3mkp4g43hdqz~]#ca…

    2022年10月17日
    5
  • MQTT客户端测试工具(模拟器)

    MQTT客户端测试工具(模拟器)给个通用资源的下载地址 所有的版本 任何系统的都有 请叫我活雷锋 点点赞就好啦 哈哈 下载地址为 https repo eclipse org content repositories paho releases org eclipse paho org eclipse paho ui app 1 0 2 自己选择版本 因为我的电脑是 win764 位系统 所以选择 org ecli

    2026年3月20日
    2
  • OpenClaw 在 Render 上部署

    OpenClaw 在 Render 上部署

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号