当DLL调用时,事实上DLL会被加载到进程空间内运行。如果APP A和其中的调用的DLL B,同时依赖DLL C,则在程序运行时,只会加载一份DLL实例(即使DLL C分别存在于A和B的同级目录),则A和B中面对的C的全局对象都是一致的,可以理解成就是把代码糅合到一起,形成一个大的APP。
但如果A和B依赖的DLL名称不同,但内容相同(就是改个名字),则在加载的过程中,会加载两个DLL实例。
我没有怎么看过深层次的Windows系统方面的书,但我相信应该在进程空间内,会存在一个和DLL文件名相关的名字空间。