1、项目中要使用到com组件,于是了解了一下com,并根据《C#高级编程》中关于com的介绍用vs创建了一下com,用于实验。以下均根据书中的demo做一遍,熟悉一下而已。

2、创建CoM组件不能使用C++或VB2010,而应使用VB6.0或C++。以下使用ATL、C++、VS2010.

  使用C#或VB9.0可以创建.NET组件,VB9.0及C# 通过一个封装器就可以把该组件用作COM对象,而封装器是真正的COM组件。

2.1 创建ATL项目and finish.

2.2 往project 中添加类。

2.3 往IWelcome接口中添加方法:

2.4 编辑.idl文件,往接口中添加自定义属性,改变C# RCW生成的类和接口的名称。

2.5 添加IMath接口:

复制IWelcome接口的定义并做修改,其中UUid可以用guidgen生成。

2.6 修改COMDemo.h文件

2.7 在COMDemo.cpp中实现各函数:

2.8 build and generate "COMServer.dll"

2.9 使用工具生成互操作程序集

tlbimp COMServer.dll /out:Interop.COMServer.dll

2.10 在电脑中注册新生成的COMServer组件。

cmd切换到com组件所在的目录,

运行:regsvr32 COMServer.dll 进行注册

运行:regsvr32 /u COMServer.dll则进行反注册

2.11 在C# 项目中使用COM组件

1)、添加com引用(注册了COM组件之后才会在此显示出需要的组件)

2)、添加namespace

3)、使用COM对象并释放

4)、结果:

5)、注意事项:

COM对象在不再使用的时候需要释放,因为COM使用本地内存堆,而.net对象使用托管的内存堆。垃圾回收器只负责回收托管的内存。

2.12 使用C#的动态语言,利用COM的IDispath接口,不使用互操作程序集直接使用COM组件:

此时项目中无需添加COM组件的引用,亦无需将COM组件放入运行目录中,只需客户机中已经注册了COM即可。

VS2010 C++ 创建COM组件的更多相关文章

  1. VS2010下创建的VB.NET项目打包发布安装包的流程

    VS2010下创建的VB.NET项目打包发布安装包的流程 参考:http://blog.csdn.net/liuyanlinglanq/article/details/8609675  关于relea ...

  2. HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)

    Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...

  3. HTML5 UI框架Kendo UI Web中如何创建自定义组件(二)

    在前面的文章<HTML5 UI框架Kendo UI Web自定义组件(一)>中,对在Kendo UI Web中如何创建自定义组件作出了一些基础讲解,下面将继续前面的内容. 使用一个数据源 ...

  4. UGUI 快捷键创建UGUI组件

      使用NGUI的时候还有xxx快捷键创建, spirte,label,button等等. 在UGUI里面的时候好像是没有快捷键的. 不知道以后多久才能有这个功能.  在家里闲无聊的时候写了一个脚本, ...

  5. [原创]VS2010中创建动态链接库及其调用

    [原创]VS2010中创建动态链接库及其调用 一.创建动态链接库 在VS2010中创建动态链接库的步骤如下: 1)生成->编译->生成MyDll 二.调用 当调用DLL中的方法,程序编译产 ...

  6. 【转】vs2010下创建webservice

    题记:学了六个月java一直想做java,没想到进了.NET项目组,还是VB2012,还有WebService,压力山大,这篇纯粹看看多图的效果,版主不要怪罪. Visual Studio 2010默 ...

  7. 动态创建angular组件实现popup弹窗

    承接上文,本文将从一个基本的angular启动项目开始搭建一个具有基本功能.较通用.低耦合.可扩展的popup弹窗(脸红),主要分为以下几步: 基本项目结构搭建 弹窗服务 弹窗的引用对象 准备作为模板 ...

  8. vue通过extend动态创建全局组件(插件)学习小记

    测试环境:nodejs+webpack,例子是看文章的,注释为自己的理解 创建一个toast.vue文件: <template> <div class="wrap" ...

  9. VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”。

    问题一:VS2010  正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”. 方法解决: The relevant setting is i ...

随机推荐

  1. 解决TextView多行滑动与NestedScrollView等,滑动冲突,我的解决方案

    1.首先要明白,什么时候回TextView处理滑动,什么时候不处理滑动 1.1往上滑动,到达文本底部就不要再处理了,如果往上滑动不在底部则继续TextView滑动 1.2往下滑动,到达文本顶部就不要再 ...

  2. ajax登录请求,无法跳转

    没有用form提交数据,用的ajax提交.服务器显示已经登录成功,并且返回了成功代码OK.却无法进行跳转: js代码: $("input[type='submit']").on(& ...

  3. Tomcat手动指定jdk路径

    Windows系统: 修改bin下的setclasspath.bat,在开头处添加: rem set specific jdkset JAVA_HOME=%CATALINA_HOME%\jdk1.8. ...

  4. http协议及http协议和tcp协议的区别

    http是应用层的协议,并且无连接,无状态的协议. http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,he ...

  5. [转]6个HelloWorld

    原文地址:点击打开链接 转这个帖子,是因为看了这个帖子使我明白了一个道理:一旦你发散自己的思维,激发自己的创意,就会发现原来编程是这么的好玩. 原文标题为<6个变态的C语言Hello World ...

  6. hdu 1428(很好的一道题,最短路+记忆化搜索)

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. MSSQL为单独数据库创建登录账户

    如果要为一个数据库创建一个独立的账号需要这个数据库为包含数据库 当前(非包含)的数据库所面临的问题在描述什么是包含数据库之前,先了解一下为什么会出现包含数据库.当前的数据库有一些问题,如下:1.在数据 ...

  8. CentOS为中文显示

    [sudo yum groupinstall chinese-support]命令即可安装

  9. 在 Ubuntu 系统安装 Redi

    在 Ubuntu 系统安装 Redi 可以使用以下命令: $sudo apt-get update $sudo apt-get install redis-server 启动 Redis $ redi ...

  10. 为函数自定义bind方法实例页面

    HTML代码: <input id="button" type="button" value="点击我" /> <span ...