LoadLibrary调用DLL时正在查找依赖DLL

Finding dependent DLLs when DLL called by LoadLibrary

本文关键字:DLL 查找 依赖 调用 LoadLibrary      更新时间:2023-10-16

我构建了一个DLL,它使用了一堆其他DLL。外部应用程序使用LoadLibrary加载我的主DLL。一个这样的例子是Excel(主DLL的扩展名为.XLL),另一个是Python(主DLL扩展名为.PYD)

我的计划是在包含其他DLL位置的主DLL中嵌入一个清单,这样我就不必执行以下一项或多项操作:

  1. 在应用程序调用LoadLibrary之前,将当前目录设置为主DLL的目录
  2. 在应用程序调用LoadLibrary之前,先调用SetDllDirectory
  3. 要求所有DLL与主DLL位于同一目录中

请注意,我已经在不同的点上完成了以上所有内容(实际上是1或2与3的结合),但这似乎并不完全令人满意。

我有机会执行我的计划吗?关于这个主题的MSDN文档似乎不透明到让人无法理解的地步(也就是说,我试图遵循它,但没有成功)。

有人把这个标记为重复,并提到了一个完全不同的问题。我知道我的DLL的依赖项-我想做的是有一种方法来通知LoadLibrary我已将所有依赖DLL放置在何处,而无需更改目录或使用SetDllDirectory。宣言似乎是为这项任务设计的,但文档太糟糕了,我想知道我是否值得再努力几个小时。

我不会以任何方式在清单文件中提供到其他DDL的路径

但解决这个问题的方法可能是使用Path环境变量
在调用LoadLibrary之前,将其他DLL的所有路径添加到路径环境变量中