COM学习笔记1

  在学习COM时,对COM的一大堆实现原理看了一大通,基本上想自己理解了。于是想现在该我来写一个COM了吧,但打开IDE却不知如何下手。我该怎么办?

在网上一收发现一个叫杨老师的前辈已经给我写了一个详细的教程,照着一步一步的做,编译,链接。哈哈 我的COM组件出来了。

 于是想着我该怎么调用呢,原来在看杨老师文章的同学们已经把调用方式写下来了,当初我没看评论,自己还跑到网上查了一番,不过印象深刻阿。其实,调用COM组件我不是第一次了,但调用自己写的COM组件确是第一次,我记得调用其它的时候是不需要填写CLASS_ID这些的,因为别人已经在头文件里帮我们搞定了,当然这是一个抄下来的COM组件,把杨老师的链接粘过来吧:浏览到这里的新手孩童也可以去看看。http://www.vckbase.com/document/viewdoc/?id=1498。都说万事开头难嘛。

说实话,接触COM的时间很早了,但一直项目不需要实战,自己就是去读读理论,今天对这个照抄的例子,我已发现自己的理论是多么的薄弱,就连COM中对BSTR字符串类型的操作函数都把握搞了一番。首先,我企图把一个char*直接赋值给BSTR变量,提示无法把char*转化成BSTR,最后查询,使用SysAllocString函数来完成,其实原因很简单,BSTR是需要记录字符串长度的。第二,我还尝试直接使用cout输出BSTR字符串,因为不知道如何做啊 ,只有自己瞎搞错了再查,哈哈。后来知道了,要使用_com_util::ConvertBSTRtoString转换,但调用这个函数提示找不到,加入头文件和库后编译通过,链接失败,WHY?

原来是有一个工程配置项需要修改,位置在“配置属性-〉C/C++-〉语言-〉将whar_t视为内置类型"默认是”是“,改成”否“,OK,通过。

就这么一个小小的东西,就搞出这么多来,可见实践和理论的差别。当然,我本次学习COM的目的是需要编写一个COM组件,使用C#语言调用,今天失败了,不知道为什么,编译通过,运行时提示找不到组件,但是我的C++客户端却找得到。这个以后再请教C#高手了。在此处我想记录的是,C#使用我们的C++编写的组件时的几个步骤:

首先,添加引用,找到要使用的COM库。第二,当然是调用了,开始的时候我还认为和我在C++写的时候是一样的,我直接把给接口声明对象,调用的时候VS会自动提示接口函数,我还以为搞定了,结果搞好后提示抽象类不能够实例话,哈哈。慢慢摸索中,发现可疑使用对象浏览器察看C#转换后的类名和函数,是的,函数也和我们在C++中的不一样了,我们C++中的出参,再这里有可能会是返回值。

哈哈,世界是多么美好,可那个女孩还是走了,我接下来该做什么。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。学习。。。









3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值