绕过第三方循环DLL依赖项?

时间:2011-08-19 01:04:49

标签: delphi dll circular-dependency cyclic-reference

我试图在第三方应用程序中访问TE编辑(来自ter32.dll)中的文本。 (关于此here的第一篇文章)我浏览了API并尝试动态加载dll以访问函数。不幸的是,ter32.dll的这种(售后市场返工)有很多依赖性。我尝试根据需要动态加载每个必需的dll,但遇到循环依赖。 ter32.dll需要x。 x需要y。 y不会加载,因为它需要x。我是否需要延迟静态加载这些?我当然希望不要因为我不想在我的应用程序中使用开销/膨胀/依赖。

1)我错过了什么? 2)有什么方法可以解决这个问题吗? 3)是否有人有任何其他方式访问TE编辑ter32.dll中的文本?

1 个答案:

答案 0 :(得分:3)

加载DLL时,加载器将为您加载所有依赖项。这些依赖项列在每个DLL的导入表中,加载器会解析它们。你不需要做任何事情。

因此,我无法理解你是如何得出自己需要处理DLL依赖关系的结论的。您是否以非标准方式加载此DLL?您是否需要WinSxS依赖项的清单,即是否需要MS C运行时?还有其他我们需要知道的事情吗?

所有这一切,在我看来,将这个DLL加载到您的进程中不太可能帮助从具有其自己的独立虚拟内存的不同进程中提取文本。换句话说,我相信您当前提取文本的尝试将失败。绕过虚拟内存障碍的方法是使用钩子在其他进程中运行代码。