解决 VC2012 ATL 多线程调用 报错:E_UNEXPECTED Catastrophic failure.
来源:互联网 发布:js点击 编辑:程序博客网 时间:2024/04/29 11:43
根本原因是在创建“ATL简单对象“时,线程模型默认选择的是“单元”。导致子线程异步调用到主线程函数时,报错“E_UNEXPECTED Catastrophic failure.”
修改方案:
将ATL简单对象的线程模型属性设置为“自由”,具体操作如下:
1. 修改 Ukey.rgs 线程模型声明内存模型为“自由”
Ukey.rgsInprocServer32 = s '%MODULE%'{val ThreadingModel = s '<span style="color:#FF0000;">Free</span>'}
2. 修改Ukey.h 类声明多线程支持
class ATL_NO_VTABLE CUkey :<span style="color:#FF0000;">public CComObjectRootEx<CComMultiThreadModel></span>,public CComCoClass<CUkey, &CLSID_Ukey>,public IDispatchImpl<IUkey, &IID_IUkey, &LIBID_ahdmsUkeyLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,public IObjectSafetyImpl<CUkey,INTERFACESAFE_FOR_UNTRUSTED_CALLER>{
保存,重新编译项目。多线程异步调用正常。
0 0
- 解决 VC2012 ATL 多线程调用 报错:E_UNEXPECTED Catastrophic failure.
- C#调用OCX控件Catastrophic failure解决方法
- VC2012 多线程
- Catastrophic failure with COM+ client Options
- Failure [INSTALL_FAILED_OLDER_SDK]报错
- VC2012 生成的执行档在 server2003 执行报错
- 解决secureCRT报“Generic clipboard failure”错误
- ATL 中调用ConvertBSTRToString报错无法解析的外部符号 "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)
- 链接数据库报错(Communications link failure)之解决篇,
- 在解决maven的ArtifactTransferException: Failure to transfer报错问题上的一些总结
- Linux下编译caffe报错catastrophic error: error while writing generated C++ file: No space left on device
- Linux下编译caffe报错catastrophic error: error while writing generated C++ file: No space left on device
- Atl多线程
- selenium IDE 报错Command execution failure.
- Communications link failure报错的处理
- android studio 报错Failure [INSTALL_FAILED_OLDER_SDK]
- 连接数据库报错 Communications link failure
- Maven工程报错Failure to transfer .....
- 第3章 人脉开发--用心寻找你的贵人
- jar包 源码查看
- Android游戏开发之游戏帧动画的播放与处理
- Oracle11g新特性影响EXP导出,ORA-01455的处理
- MY SQL insert 速度过慢
- 解决 VC2012 ATL 多线程调用 报错:E_UNEXPECTED Catastrophic failure.
- android 自定义checkbox
- CG语言基础知识整理——基本数据类型
- 【error】No 'Access-Control-Allow-Origin' 跨域问题
- Linux IO模型
- Hibernate工作原理
- sessionId与cookie 的关系(百度文库)
- exception对象
- spring学习必备设计模式之工厂模式