Dynamic-Link 库汇报

有时需要将 DLL 替换为较新版本。 在替换 DLL 之前,请执行版本检查,以确保将旧版本替换为较新版本。 可以替换正在使用的 DLL。 用于替换正在使用的 DLL 的方法取决于所使用的操作系统。 在 Windows XP 及更高版本上,应用程序应使用 独立应用程序和并行程序集

如果执行以下步骤,则无需重新启动计算机:

  1. 使用 MoveFileEx 函数重命名要替换的 DLL。 不要指定MOVEFILE_COPY_ALLOWED,并确保重命名的文件位于包含原始文件的同一卷上。 还可以通过为同一目录中的文件提供不同的扩展名来重命名该文件。
  2. 将新 DLL 复制到包含重命名 DLL 的目录。 现在,所有应用程序都将使用新的 DLL。
  3. MoveFileEx 与 MOVEFILE_DELAY_UNTIL_REBOOT 配合使用可删除重命名的 DLL。

在进行此替换之前,应用程序将使用原始 DLL,直到卸载它。 进行替换后,应用程序将使用新的 DLL。 编写 DLL 时,必须小心确保它已准备好应对这种情况,尤其是在 DLL 维护全局状态信息或与其他服务通信时。 如果 DLL 未准备好更改全局状态信息或通信协议,更新 DLL 需要重新启动计算机,以确保所有应用程序都使用同一版本的 DLL。