DLL无法加载的问题,百思不得其解,哪位大大能教一下下?
高手们好,小弟现在碰到了一个比较郁闷的问题,症状如下:
一个主进程A,一个DLL B,另一个DLL C,B被A加载,C被A加载,同时B被C加载。即有:
B-->A 隐式链接(通过.lib)
B-->C 隐式链接(通过.lib)
C-->A 显式链接(通过LoadLibrary)(C被A加载时,B相当于又被A加载了一次?)
我的思想是使B成为一个API DLL,B中的函数被C调用,同时将调用结果告知A。现在的问题是,我在C中如果只是在工程里加入了B的.lib文件和.h文件并生成DLL,则A可以通过LoadLibray来链接C。而如果我在C中尝试着调用B中的函数(甚至于这个函数都没有执行到,只是在代码中写上一句调用而已),则再编译生成的DLL,就不能被A的LoadLibrary加载(返回NULL)。这是为什么??
另外我发现,如果我在C的工程中,设A为宿主进程,则无论按Ctrl-F5或F5,执行A后都可以加载C。而如果我是在A的工程中执行A,则在上述情况下,无法加载C。
无比郁闷,这么妖怪的问题啊。