走出憧憬的专栏

开开心心学习,快快乐乐工作!从底层出发,一起东西都裸露无疑。

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

阅读更多
个人分类: COM学习
上一篇项目已经开始学习HL7一段时间了,以后还是对学习做一些笔记
下一篇COM学习2
想对作者说点什么? 我来说一句

com学习笔记

2012年03月28日 118KB 下载

ssh学习笔记1 ssh学习笔记1

2011年08月03日 5.22MB 下载

ASN[1].1编码学习笔记

2010年09月30日 124KB 下载

java学习笔记11111

2009年05月14日 2.05MB 下载

没有更多推荐了,返回首页

关闭
关闭