DLL在加载依赖项之前设置路径

时间:2012-07-20 08:14:13

标签: gcc dll path

我想找到解决问题的有效方法,即在加载DLL依赖项之前更改进程PATH变量"。

在详细解释之前,我想总结一些无法修改的要求。我在这里的其他帖子中找到了一些解决方案,但没有人满足它们:

  • 我使用MinGW GCC,不允许其他工具链(甚至是MS VS)。
  • 使用计算机设置更改系统(或用户)PATH变量不是一个选项,主DLL复制的路径不是系统路径。
  • 当然不可能(当然)在加载它的应用程序的相同路径中使用主DLL(否则这篇文章将是一个废话)。
  • 无法使用LoadLibrary加载依赖DLL。

所以,我已经创建了一个名为main.dll的DLL,它依赖于A.dll,它位于main.dll的同一目录中,但与可执行目录不同。

我想在DllMain或A.dll加载之前的任何其他地方执行GetModuleFileName和SetEnvironmentVariable,所以我只能为正在运行的进程修复PATH变量。

我找到解决此问题的唯一方法是创建一个简单的新main.dll,它发布原始main.dll的相同方法,在DllMain更改路径,然后,在第一次调用其中一个时方法,执行LoadLibrary。主要问题是我有不同版本的main.dll,使用不同的公共方法,并且我已经创建了一个新的"桥接"我随时创建一个新的main.dll,这非常烦人(也可能有bug)。

我读到延迟加载,但我还没有找到一种可以与MinGW一起使用的方式。

有什么想法吗?

非常感谢!!!

0 个答案:

没有答案