当LoadLibrary

时间:2016-08-01 22:17:27

标签: c++ windows dll

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

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

  1. 在应用程序调用LoadLibrary之前,将当前目录设置为主DLL的目录。
  2. 在应用程序调用LoadLibrary之前调用SetDllDirectory。
  3. 要求所有DLL与主DLL位于同一目录中。
  4. 请注意,我已经在不同的点上完成了上述所有操作(实际上是1或2与3组合),但它似乎并不完全令人满意。

    我有机会参与我的计划吗?关于这个主题的MSDN文档对于不可理解的点似乎是不透明的(即我试图遵循它而没有成功)。

    有人将此标记为副本并提及完全不同的问题。我知道我的DLL的依赖关系 - 我希望能够做的是通知LoadLibrary我已经放置了所有相关DLL,而无需更改目录或使用SetDllDirectory。清单似乎是为这项任务而设计的,但文档非常糟糕,以至于我想知道是否值得付出更多努力是值得的。

1 个答案:

答案 0 :(得分:0)

我不会以任何方式提供清单文件中其他DDL的路径
但也许解决这个问题的方法是使用Path环境变量 在调用LoadLibrary之前,将所有其他DLL的路径添加到路径环境变量中。