从dll加载DLL?

时间:2010-04-20 11:44:20

标签: c++ multithreading loadlibrary dll

从dll加载dll的最佳方法是什么?

我的问题是我无法在process_attach上加载dll,我无法从主程序加载dll,因为我不控制主程序源。因此我也不能调用非dllmain函数。

4 个答案:

答案 0 :(得分:77)

答案 1 :(得分:13)

最强大的方法是将第一个DLL与第二个DLL的import lib链接起来。这样,第二个DLL的实际加载将由Windows本身完成。听起来非常简单,但不是每个人都知道DLL可以链接到其他DLL。 Windows甚至可以处理循环依赖。如果A.DLL加载需要A.DLL的B.DLL,则解析B.DLL中的导入而不再加载A.DLL。

答案 2 :(得分:5)

我建议你使用延迟加载机制。 DLL将在您调用导入函数的fisrt时加载。此外,您可以修改加载功能和错误处理。有关详细信息,请参阅Linker Support for Delay-Loaded DLLs

答案 3 :(得分:0)

一个可能的答案是通过使用LoadLibrary和GetProcAddress来访问指向已加载的dll中找到/位于的函数的指针 - 但是你的意图/需求不够明确,无法确定这是否是一个合适的答案。