vs c语言 开发com组件,C# 开发COM组件供c++使用

C# 开发COM组件供c++使用

Microsoft在解决和以往的COM和SDK开发技术之间的互操作性(Interoperability)方面做了很多的工作,其中包括COM和.NET对象之间的相互调用以及.NET如何调用SDK中的Windows库函数。

本文在学习网上资料的基础上,实现用C#开发组件供C++使用的过程。

编程环境:vs2015 (COM组件) vs2005 c++调用 操作系统 win10

一.C#COM组件

1.新建一个C#类库项目:ExcelCom  (原计划做一个EXCEL的com)

bfcea24d958e873c175bf3481251bcf6.png

2.在项目中添加接口

C++调用com组件中所有的功能只能通过接口来调用,不能直接调用类或函数

d12bad6633b362dc0c1f50c82fb68a18.png

Guid可通过 Tool -> 创建GUID产生

ff4689b556905a105f9f31099369dffc.png

接口DoExcel的编写

public interfaceDoExcel

{

[DispId(1)] //如果需要添加其他函数,继续加 [DispId(2)] ...

int Plus(int a, intb);

}

3.添加一个ExcelOperate类继承接口DoExcel

using System.Runtime.InteropServices;

2ad5f23cf0beb850454cf419ba6b7927.png

4. 修改AssemblyInfo.cs文件中[assembly: ComVisible(false)]

446f0be60078926faba4031d6e7795ba.png

项目->属性->生成下 选中"为COM互操作注册“

9a35563699d0a08e70e73c6c44e76dea.png

5.生成解决方案

生成解决方案,成功才可。生成的文件ExcelCom.dll文件。

6.COM注册

COM 注册后才能使用。

注册过程:管理员身份运行cmd.进入C:\Windows\Microsoft.NET\Framework\v2.0.50727

注意:自己系统上安装的.net版本

输入”RegAsm D:\CAAProj\ExcelCom\ExcelCom\bin\Debug\ExcelCom.dll /tlb:ExcelCom.tlb /codebase“

0d3ddb43e6a865dec7693ade41488437.png

COM卸载与注册过程基本相同,只需将命令改为

“RegAsm  /u  D:\CAAProj\ExcelCom\ExcelCom\bin\Debug\ExcelCom.dll  /tlb: COMLib.tlb  /codebase”

提示成功注册后,及可在C++上引用了(可在项目目录下是否成功生成了ExcelCom.tlb文件)

二.C++引用COM组件

1.新建一个C++程序(控制台程序即可),本例中是ExcelComDemo

2.将ExcelCom.tlb拷贝到ExcelComDemo下的ExcelComDemo文件中。

3.创建一个调用代码

#include "stdafx.h"#include#include#include

using namespacestd;

#import"ExcelCom.tlb"named_guids raw_interface_onlyint _tmain(int argc, _TCHAR*argv[])

{

CoInitialize(NULL);

ExcelCom::DoExcelPtr ptr;//接口

ptr.CreateInstance(ExcelCom::CLSID_ExcelOperate);//实例化一个类 CLSID_ 类名

long a = 1;long * lPtr = &a;long AA = ptr->Plus(1,2);

cout<

system("pause");return 0;

}

4.运行后执行结果如下:

f4b43a6af9ce5f6e02956d6a3c4f9183.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值