4

如果您在LoadLibrary没有路径的情况下调用(例如,LoadLibrary("whatever.dll")Windows 通常会遵循其标准搜索算法,与它用于查找 EXE 的算法相同。

我的问题是:假设应用程序清单指定了系统 DLL 的特定版本,例如 comctl32.dll 6.0。在这种情况下,会LoadLibrary("comctl32.dll")立即转到正确的并排文件夹,还是仍然执行某种搜索?

4

2 回答 2

6

来自微软:

应用程序可以通过指定完整路径、使用 DLL 重定向或使用清单来控制加载 DLL 的位置。如果没有使用这些方法,系统会在加载时搜索 DLL,如本主题中所述。

所以是的,如果存在清单,它将直接进入 SxS 文件夹。

于 2008-09-30T18:26:07.683 回答
0

要在遇到缺少库的问题时探测加载程序,您可以使用“sxstrace”功能。www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx提供了有关清单和 WinSxs 之间依赖关系的一些详细信息。

于 2010-09-13T17:42:39.800 回答