奇特问题——两个DLL的私有变量相互干扰!!!
DLL 1 定义的类:
class TexFactory
{
public:
//构造方法
TEXFACTORY_API TexFactory(void *pTextureBlend);
~TexFactory(void);
TEXFACTORY_API Textures* CreateTexFromImage(Images *hImg);
private:
UCHAR PicStructSize;
TextureBlend *pTB;//这是一个指向 TextureBlend 结构的指针
}
在构造函数中,对 pTB 指针赋值:
TexFactory::TexFactory(void *pTextureBlend)
{
PicStructSize = sizeof(CUSTOMVERTEX_PIC);
this->pTB = (TextureBlend *)pTextureBlend;
}
//------------------------------------------------------------------------
DLL 2 定义的类:
class GraphContextAchieve : public CGraphContext
{
protected:
D3DMATRIX TransMatrix;//视图矩阵结构
…………
}
//-------------------------------------------------------------------------
在DLL 3 中初始化前两个类:
GC = new GraphContextAchieve(&Mesh_dev);
Tex_Factory = new TexFactory(&BlendTx);
刚初始化完毕,在DLL 3中调用
Tex_Factory->CreateTexFromImage(Img);[这里使用了pTB指针]一切正常;
但是,在调用GC->XXXX();[改变了TransMatrix结构中的值]后,就出问题了。
如下,pTB指针竟然变成了0 :
&TransMatrix._21 = [409804912]
this->pTB = [0],&this->pTB = [409804912]
可见,两个变量使用了相同的内存空间,这是为什么呢??如何解决??