要是不用全局变量呢, 直接:Object* Init(){ return new Object; }最好还提供一个释放的函数: void Free(Object* pObj){ delete pObj; }
解决方案 »
- 菜鸟求助,vc6.0 ocx
- VC控制Zebra打印机打印汉字方法
- WinSocket与CSocket的区别
- 老大不小了还下岗,郁闷,散分。。。
- 怎样实现用工作线程来负责CSocket的消息的响应。非常感谢!
- 500分求如何将两个高度相同的jpeg连接在一起
- 高手相助,谁能给讲讲 SafeArrayAccessData 等相关函数一 般用在什么地方?
- MFC中使用ADO连接ACCESS数据库的问题
- WM_KEYDOWN不也属于oncommand的消息吗?为什么还单独做一个映射?
- 哪里有W32 SDK下载?
- 求助各位大哥: 如何把两幅位图相减?请给段代码
- dll 路径问题和VC6 的dll加载机制
{
Obj* m_s=new Obj();
return (long)m_s;
}long TerminateInterface(long handle)
{
Obj* m_s=((Obj*)handle);
delete m_s;
return 0;
}long Dosomething(long handle)
{
return ((Obj*)handle)->dosomething();
}这样的方式使用即可避免全局量的冲突
只Load一次, 多次 NewObj
有个函数可能大家不大用,所以不熟悉
TlsAlloc,可用于在dll中为每个Thread分配不同的存储区
也就是说,TlsAlloc一个相同的编号,对于不同Thread来说,其内容是不一样的
lz可以把g_pObject要保存的对象比如编为常量 #define GLOBALOBJECT 1
每个Thread用TlsGetValue(GLOBALOBJECT)就可以得到不同的object啦具体MSDN
Using Thread Local Storage in a Dynamic-Link Library
如果这是考虑g_object已经被赋值,那增加一个类似reset的方法就行了