什么是DLL文件?为什么我的PC上没有DLL文件?

当您收到一条错误消息,指出Windows找不到特定的DLL文件时,可能很想从那里的许多DLL站点之一下载该文件。这就是为什么你不应该这样做。

什么是DLL?

有关的:什么是rundll32.exe,为什么运行?

在开始介绍为什么不应该从Internet下载动态链接库(DLL)文件之前,首先让我们看一下DLL文件是什么。 DLL文件是一个库,其中包含用于在Windows中执行特定活动的一组代码和数据。然后,应用程序可以在需要执行该活动时调用这些DLL文件。 DLL文件与可执行文件(EXE)非常相似,不同之处在于DLL文件无法在Windows中直接执行。换句话说,您无法双击DLL文件来像运行EXE文件一样运行它。而是,DLL文件被设计为由其他应用程序调用。实际上,它们旨在被多个应用程序一次调用。 DLL名称的“链接”部分也暗示了另一个重要方面。可以将多个DLL链接在一起,以便在调用一个DLL时,也可以同时调用多个其他DLL。

Windows本身广泛使用了DLL,作为浏览Windows的参考。 C:\ Windows \ System32 文件夹可以告诉你。作为我们正在讨论的示例,让我们考虑Windows系统文件“ comdlg32.dll”。该文件(也称为“通用对话框库”)包含用于构建Windows中常见的许多通用对话框的代码和数据,例如用于打开文件,打印文档等的对话框。此DLL中的指令处理从接收和解释用于对话框的消息到指定对话框在屏幕上的外观等所有内容。显然,多个应用程序可以同时调用此DLL,否则您将无法一次在多个应用程序中打开一个对话框(如下图所示)。

DLL允许对代码进行模块化和重用,这意味着开发人员不必花时间从头开始编写代码即可执行平凡的功能或常见功能。尽管开发人员将创建自己的DLL来与自己的应用程序一起安装,但由应用程序调用的绝大多数DLL实际上与Windows或其他包(例如Microsoft .NET Framework或Microsoft C ++ Redistributables)捆绑在一起。通过这种方式对代码进行模块化的另一个大优点是,更新更容易应用于每个DLL,而不是应用于整个应用程序,尤其是当这些DLL不是来自应用程序开发人员时。例如,当Microsoft更新其.NET Framework中的某些DLL时,所有使用这些DLL的应用程序都可以立即利用更新后的安全性或功能。

有关的:什么是Microsoft .NET Framework,为什么要在我的PC上安装它?

下载的DLL可能已过时

因此,如果对DLL有所了解,为什么在系统中缺少DLL时不从Internet下载它们呢?

下载的DLL遇到的最常见问题是它们已经过时。许多DLL站点都是通过从自己的计算机或用户的计算机上载它们来获得DLL的。您可能已经看到问题了。这些站点中的大多数都只需要您的流量,并且一旦DLL被上载,它们几乎没有动力来确保文件保持最新。此外,供应商通常不会将更新的DLL作为单个文件发布给公众,您甚至可以看到那些尝试 使文件保持最新状态不太可能成功。

还有一个进一步的问题是,DLL通常被集成到程序包中。程序包中一个DLL的更新通常伴随着同一程序包中其他相关DLL的更新,这意味着即使在极少数情况下您确实获得了最新的DLL文件,您也不会获得具有以下内容的相关文件:已更新。

下载的DLL可能被感染

尽管不那么普遍,但潜在的更为严重的问题是,您从供应商以外的其他来源下载的DLL有时可能会加载病毒或其他可感染PC的恶意软件。在不太谨慎地获取文件位置的网站上尤其如此。并不是说这些网站会竭尽全力告诉您有关其风险来源的信息。真正令人恐惧的部分是,如果您下载了受感染的DLL文件,则由于DLL文件的本质,您将冒着使该文件比常规受感染文件更深入地访问的风险。

有关的:什么是Windows 10最佳防病毒软件? (Windows Defender是否足够好?)

好消息是,一个好的实时防病毒应用程序通常可以在将这些被感染的DLL文件实际保存到系统之前检测出这些文件,并防止它们造成任何损坏。不过,您必须记住,即使是出色的防病毒程序也可能无法为您提供完善的保护。如果您习惯于下载有风险的文件,那么它可能会在某个时候赶上您。最好只是避免使用这些DLL网站。

他们可能仍然无法解决您的问题

虽然您的PC上只有一个DLL文件可能已损坏或删除,但其他DLL或相关应用程序文件也很可能也已损坏或丢失。您收到有关某个特定文件的错误的原因是,这是应用程序崩溃前遇到的第一个错误,而您不会收到其他通知。无论问题的原因是什么,这都是正确的。

有关的:坏道解释:为什么硬盘驱动器出现坏道以及您能对此做什么

DLL为什么会丢失或损坏?可能是另一个错误的应用程序或更新试图替换该文件而失败,或者将其替换为过期的副本。这可能是您的主应用程序或.NET之类的软件包安装中的错误。甚至可能是您遇到了另一个问题(例如硬盘上的坏扇区),这些问题阻止了文件的正确加载。

如何修复DLL错误?

确保获得稳定,最新和干净的DLL的唯一方法是通过其来源获取它。通常,该来源将是:

有关的:如何在Windows中扫描(和修复)损坏的系统文件

  • 您的Windows安装媒体。您不太可能仅能从安装媒体中复制DLL文件,但是您确实可以快速尝试,然后再重新安装Windows。您可以使用Windows资源保护工具(通常称为系统文件检查器或SFC),该工具将扫描并修复Windows中损坏或丢失的系统文件。运行该工具时,应随身携带安装介质,以防万一需要从那里复制文件。 (如果没有安装光盘,则可以在此处下载。)
  • Microsoft .NET Framework程序包。 Windows将自动安装多个版本的.NET,许多应用程序也从这些软件包中安装文件。您可以阅读有关.NET框架的文章,该文章还提供了一些有关查找和修复相关问题的建议。
  • 各种Microsoft Visual C ++可再发行组件包。根据您使用的应用程序,您的PC上可能安装了多个版本的C ++ Redistributable。有时很难确定是哪一个罪魁祸首,但是一个不错的起点是我们在C ++ Redistributables上的文章,该文章还提供了一些疑难解答步骤和链接,您可以在这些链接中直接从Microsoft下载最新版本。
  • DLL附带的应用程序。如果DLL是与应用程序一起安装的,而不是作为单独的软件包的一部分安装的,那么最好的选择就是重新安装该应用程序。某些应用程序允许您执行修复,而不是完全重新安装。这两种方法都应该起作用,因为修复通常会在安装文件夹中查找丢失的文件。

如果所有操作均失败,则您可以联系应用程序供应商,并索取单个DLL文件的副本。一些公司愿意接受这一要求。有些不是。如果您遇到一家不提供个人文件的公司,那么他们至少可以提供其他建议来解决您的问题。


$config[zx-auto] not found$config[zx-overlay] not found