奇特问题——两个DLL的私有变量相互干扰!!!

SuperLy 2005-05-12 01:05:07
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]
可见,两个变量使用了相同的内存空间,这是为什么呢??如何解决??

...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperLy 2005-08-03
  • 打赏
  • 举报
回复
果然是头文件问题……
zichen1918 2005-08-03
  • 打赏
  • 举报
回复
看头文件是否符合

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧