【问题标题】:Best way to find out if a DLL is present in the system找出系统中是否存在 DLL 的最佳方法
【发布时间】:2017-12-28 10:55:37
【问题描述】:

我目前正在使用 LoadLibrary 和 FreeLibrary 函数来检查运行我的应用程序的系统中是否存在 dll(mfplat.dll)。我的要求只是检查系统中是否存在 dll,我不需要调用 dll 中的任何函数。有没有更快的检查方法?

【问题讨论】:

  • 速度在这里真的很重要吗?
  • 定义“存在于您的系统上”。系统上的任何地方,或可用于 dll 搜索?还有为什么你觉得有必要检查?为什么不在发生负载故障时处理它。无论如何,你必须这样做。为什么要编写额外的代码。

标签: c++ windows winapi dll


【解决方案1】:

您可以使用LoadLibraryEx() 并为dwFlags 参数设置LOAD_LIBRARY_AS_DATAFILE 位。

来自 MSDN:

如果使用此值,系统会将文件映射到调用 进程的虚拟地址空间,就好像它是一个数据文件一样。没有什么是 done 执行或准备执行映射文件。

因此,与普通的 LoadLibrary() 相比,这应该会显着加快速度。

【讨论】:

  • 除了加速之外,这避免了在 dll 中执行代码,这可能是一个更重要的考虑因素
猜你喜欢
  • 1970-01-01
  • 2011-01-18
  • 2012-05-21
  • 2013-10-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多