VS2010 C++ 创建COM组件
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组件的更多相关文章
- VS2010下创建的VB.NET项目打包发布安装包的流程
VS2010下创建的VB.NET项目打包发布安装包的流程 参考:http://blog.csdn.net/liuyanlinglanq/article/details/8609675 关于relea ...
- HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...
- HTML5 UI框架Kendo UI Web中如何创建自定义组件(二)
在前面的文章<HTML5 UI框架Kendo UI Web自定义组件(一)>中,对在Kendo UI Web中如何创建自定义组件作出了一些基础讲解,下面将继续前面的内容. 使用一个数据源 ...
- UGUI 快捷键创建UGUI组件
使用NGUI的时候还有xxx快捷键创建, spirte,label,button等等. 在UGUI里面的时候好像是没有快捷键的. 不知道以后多久才能有这个功能. 在家里闲无聊的时候写了一个脚本, ...
- [原创]VS2010中创建动态链接库及其调用
[原创]VS2010中创建动态链接库及其调用 一.创建动态链接库 在VS2010中创建动态链接库的步骤如下: 1)生成->编译->生成MyDll 二.调用 当调用DLL中的方法,程序编译产 ...
- 【转】vs2010下创建webservice
题记:学了六个月java一直想做java,没想到进了.NET项目组,还是VB2012,还有WebService,压力山大,这篇纯粹看看多图的效果,版主不要怪罪. Visual Studio 2010默 ...
- 动态创建angular组件实现popup弹窗
承接上文,本文将从一个基本的angular启动项目开始搭建一个具有基本功能.较通用.低耦合.可扩展的popup弹窗(脸红),主要分为以下几步: 基本项目结构搭建 弹窗服务 弹窗的引用对象 准备作为模板 ...
- vue通过extend动态创建全局组件(插件)学习小记
测试环境:nodejs+webpack,例子是看文章的,注释为自己的理解 创建一个toast.vue文件: <template> <div class="wrap" ...
- VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
问题一:VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”. 方法解决: The relevant setting is i ...
随机推荐
- C# 判断一个单链表是否有环及环长和环的入口点
1.为什么写这个随笔? 前几天参加一个电面,被问到这个问题,想总结一下. 2.为什么标题强调C#? 想在网上看看代码,却没找到C#版的,于是自己用C#实现一下. 一.解决问题的思路 1.一种比较耗空间 ...
- C#ActiveX安装项目
C#开发的ActiveX控件发布方式有三种: 制作客户端安装包,分发给客户机安装: 制作在线安装包,客户机联机安装: 使用html中object的codebase指向安装包地址. 以下为制作安装包: ...
- linux磁盘占用跟每个文件夹大小总和不符
1.一种情况是删除了大文件但是没有释放出来,因为有进程还在调用使用 最简单的方法是reboot下服务器再对比下: 2.查看服务器空间使用情况 df -h cd / du -sh *
- HEER-Easing Embedding Learning by Comprehensive Transcription of Heterogeneous Information Networks
来源:KDD 2018 原文:HEER code:https://github.com/GentleZhu/HEER 注: 若有错误,欢迎指正 这篇KDD’18的文章,没有按照常规的方法将所有的n ...
- mac系统命令行获取root权限
刚上手mac本,对系统各种操作不熟,把过程记录下来. 使用内置命令行工具时遇到权限问题,有两种方法,第一种是在每行命令之前加上sudo,例如: 第二种是直接使用roor账户,但是mac系统默认没有ro ...
- Java AQS学习
参考原文: Java并发之AQS详解 <Java并发编程的艺术> AQS 概述 AQS简介 AQS(AbstractQueuedSynchronizer)就是一个抽象的队列同步器,它是用来 ...
- AtomicReference 和 volatile 的区别
顾名思义,就是不会被打断!!!!!! https://www.cnblogs.com/lpthread/p/3909231.html java.util.concurrent.atomic工具包,支持 ...
- Edit Distance——经典的动态规划问题
题目描述Edit DistanceGiven two words word1 and word2, find the minimum number of steps required to conve ...
- Sqrt(x)——二分法,防越界
Implement int sqrt(int x). Compute and return the square root of x. 转自:http://blog.csdn.net/doc_sgl/ ...
- OFBIZ 10.04 开发环境搭建(ofbiz+mysql+eclipse)
1.下载安装 JDK1.6,并设置环境变量 在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”. 新建系统变量JAVA_HOME:C:Program Fil ...