欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
VS 2005打开类视图 vc6、vc7、vc8、vc9、vc10、vc11、vc12、vc14、vc15各代表Visual Studio C++什么版本
未知  向现有的MFC项目添加ATL支持。
[ 发布日期:12个月前 (12-08) ]   [ 来自:本站原创 ] [分类:C\C++相关]
如果在现有的MFC项目中实现了依赖ATL基础库的Com对象时,直接运行会出现异常:
CComCritSecLock<CComCriticalSection> lock(_pAtlModule->m_csStaticDataInitAndTypeInfo, false);

像上面的代码在atlcom.h中,_pAtlModule 的值为空,没有初始化。

网上说可以通过添加类向导,然后选择 添加ATL支持到现有的MFC项目。

实际测试,发现老项目在添加时会失败。只有新建的MFC项目可以添加成功。

然后,添加的结果也不满意,多了一些不需要的东西。
1,添加了idl文件,会在编译时生成tlb库。
2,在资源中添加了tlb库,会将tlb库链接到程序资源中。
3,添加了rgs文件(注册表项目)。
4,会在调用com对象时进行自注册操作(将rgs导入注册表)。

上面这些都是我不想要的,我只是想干干净净的,让我实现的com对象可以正常调用传递参数就行了。
不需要在系统中注册com组件。

对过对比分析新的mfc项目添加atl支持后的代码,发现添加支持很简单。
在现有的cpp文件中添加如下代码即可。
[复制到剪贴板]

class CMFCApplication1Module :public ATL::CAtlMfcModule
{
};

CMFCApplication1Module _AtlModule;
 




就像上面这样,定义一个atl的app类。
再实例一个对象即可。
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/298
复制引用地址https://www.rickw.cn/trackback/298/GBK
[ 分类:C\C++相关  | 查看:865 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5