我的问题是这里有三个库,两个动态库(DLL A和DLL B)和一个静态库C。C中定义了一些全局变量和静态变量,并且两个DLL都与静态库C链接。问题是当A和B都被一个进程加载时,这些变量发生了什么?每个 DLL 都有自己的实例,或者共享同一个实例。
除非两个 DLL 都导出该变量,否则不会发生任何特殊情况 - 两个 DLL 都有自己的内部副本。如果两者都导出变量,它们仍然有自己的副本,但使用这两个 DLL 的程序将需要选择。
这个问题被标记为 C++,但这实际上是一个 Win32 答案。