困扰小弟我数小时的_pAtlModule->Lock() COM回调函数Crash有关问题
困扰我数小时的_pAtlModule->Lock() COM回调函数Crash问题
在VC6中编译CComObject<CallBack>* pCallback; hr = CComObject<CallBack>::CreateInstance(&pCallback);没有问题,但是在VS2005和VS2008中的atlcom.h: _pAtlModule->Lock()处发生了中断。通过对比发现:VC6此处是: _Module.Lock();但是VS中是_pAtlModule->Lock();问题就出在这里。所以在CPP中的CComObject<CallBack>* pCallback前添加:
CComModule _Module;
_pAtlModule=&_Module; 就完全可以编译通过。
参考:http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/6de21bab-7786-497f-99ba-c40de8ff1320/
------解决方案--------------------
参考下这个:
http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/7567dead-d1ad-45d9-b126-5aa9a0de4511
------解决方案--------------------
提醒你 CComObject<CallBack>::CreateInstance 创建出来的对象 不能直接Release, 需要手动调用AddRef后, 才能Release
------解决方案--------------------
您是说他之前没有AddRef()么?
在VC6中编译CComObject<CallBack>* pCallback; hr = CComObject<CallBack>::CreateInstance(&pCallback);没有问题,但是在VS2005和VS2008中的atlcom.h: _pAtlModule->Lock()处发生了中断。通过对比发现:VC6此处是: _Module.Lock();但是VS中是_pAtlModule->Lock();问题就出在这里。所以在CPP中的CComObject<CallBack>* pCallback前添加:
CComModule _Module;
_pAtlModule=&_Module; 就完全可以编译通过。
参考:http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/6de21bab-7786-497f-99ba-c40de8ff1320/
------解决方案--------------------
参考下这个:
http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/7567dead-d1ad-45d9-b126-5aa9a0de4511
------解决方案--------------------
提醒你 CComObject<CallBack>::CreateInstance 创建出来的对象 不能直接Release, 需要手动调用AddRef后, 才能Release
------解决方案--------------------
您是说他之前没有AddRef()么?