COM学习笔记1

原创 2011年09月03日 17:05:50

  在学习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原理与应用》学习笔记

 为了学习ActiveX插件的编写,从这几天开始学习COM原理。ActiveX是以COM为基础的,所以要想要比较深入的学习ActiveX技术需要先学习COM原理。   COM是微软提出的组件标...
  • dennisxie1992
  • dennisxie1992
  • 2014年09月08日 17:14
  • 525

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015年05月12日 11:06
  • 886

1.zabbix学习笔记:zabbix的安装

zabbix的安装为什么需要监控随着互联网公司业务不断增长,硬件规模不断扩大,作为SA我们需要清楚每一台服务器的状态(温度、CPU使用率、内存使用率、磁盘使用率等),如果使用人为的方式将会极大增加工作...
  • linux_player_c
  • linux_player_c
  • 2015年11月13日 14:30
  • 1680

斯坦福机器学习网易公开课笔记1

之前在coursera上看了Andrew Ng的机器学习课程,那个课程比较简明,适合对机器学习有一个整体的印象,但是很多细节的内容和推导都忽略了。现在想要了解机器学习更多,所以开始看Andrew Ng...
  • zhonglj0314
  • zhonglj0314
  • 2017年02月20日 09:57
  • 524

TCP-IP学习笔记-- 浅析TCP(1)

TCP的特点 TCP报文格式 TCP可靠数据传输机制数据序号和确认号机制 特点 TCP连接的建立与终止 建立连接三次握手 终止连接四次挥手 TCP的状态转换图 TCP的流量控制 工作原理 TCP拥塞控...
  • Yvonne8_5
  • Yvonne8_5
  • 2016年02月20日 23:27
  • 913

CUDA学习笔记(1)

CUDA从入门到精通(零):写在前面 在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示...
  • u011534057
  • u011534057
  • 2016年05月06日 20:24
  • 1245

Angularjs 学习笔记(一)基础

1.简介: Angular JS (Angular.JS) 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作。 Ang...
  • qq_25178609
  • qq_25178609
  • 2016年10月02日 16:13
  • 468

Mule ESB 学习笔记(1)

1. 简介 Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB支持集成现有系统而无论其底层采用何种技术...
  • canlets
  • canlets
  • 2014年06月15日 21:36
  • 983

Mule ESB 学习笔记(2)

6. 配置模式 Mule 3.0版本提供了“pattern”的机制。Pattern总结了实际使用过程中的常见场景,以简化的服务配置方式提供。 6.1 简单服务模式(simple service p...
  • canlets
  • canlets
  • 2014年06月15日 21:50
  • 1161

【机器学习笔记1】Logistic回归总结

Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (2013年11月) PDF下载地址:http://download.csdn.net/detail/lewsn200...
  • achuo
  • achuo
  • 2016年04月15日 11:16
  • 1113
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:COM学习笔记1
举报原因:
原因补充:

(最多只允许输入30个字)