gpt4 book ai didi

windows - 使用 LoadLibrary 加载 DLL 两次

转载 作者:可可西里 更新时间:2023-11-01 09:38:13 27 4
gpt4 key购买 nike

我有 A.DLLB.DLL

使用 VS 2010,我在 A.DLL 项目的 C++ 函数中设置了一个断点,并使用 procexp.exe 查看当前加载了哪些 DLL。显然,加载了A.DLL

我需要从这个函数调用B.DLL。注意:B.DLL 具有对 A.DLL 的库依赖性。这个库叫做 A.LIB

使用 LoadLibrary,我执行语句:

HANDLE hLib = LoadLibrary("B.DLL");

执行完这一行后,我再次查看 procexp.exeA.DLL 被加载了两次!!如果我删除 A.LIBB.DLL 的依赖,就不会发生这种情况。 Process Explorer 报告 A.DLL 的两个实例具有不同的基地址,因此它们实际上是不同的模块。

我的问题是为什么这会加载另一个 A.DLL 实例?它是否可能意识到A.DLL 已经加载?

最佳答案

所以我无法弄清楚为什么 A.DLL 被加载两次的原因,所以我继续重组我的代码并想出了一个更好的解决方案。 (最终对我来说效果很好)

我不再使用 B.DLLA.DLL 的库依赖,而是删除了该依赖,而不是使用通过 A 公开的一些可导出函数.LIB,我为此函数使用了一个函数指针,并通过调用 LoadLibrary、GetProcAddress 等将其传递下去。

在这样做时,它不会加载 A.DLL 两次,现在一切都很好 :)

关于windows - 使用 LoadLibrary 加载 DLL 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222371/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com