C#.NET开发过程中有时候会需要与其他语言对接,封装com组件是一种不错的方式,只要把类库设置成com组件并注册到系统中,这样就可以以COM组件的方式与其他语言交互,本文完整介绍了从com组件封装到com组件注册全过程。
首先我们需要新建.net framework类库项目。
然后右键项目属性,更改项目属性为COM组件,如下图。
封装COM组件代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace mycom
{
/// <summary>
/// 每个COM类,都必须有一个接口定义,供其他语言调用。
/// </summary>
[ComVisible(true),
Guid("e5de703f-cf41-1540-6608-ab2e160d622c"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IDemoCom
{
[DispId(1)]
int Add(int a, int b);
[DispId(2)]
double Add(double a, double b);
[DispId(3)]
long Add(long a, long b);
}
/// <summary>
/// 继承接口,实现COM类
/// </summary>
[Guid("4fef63b4-2745-97bc-2303-087341de71d3"),
ClassInterface( ClassInterfaceType.None),
ComSourceInterfaces(typeof(IDemoCom))]
public class DemoCom : IDemoCom
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
public long Add(long a, long b)
{
return a + b;
}
}
}
注册COM组件时,要以管理员的身份运行cmd命令行,然后逐行运行如下代码。
- 定位路径:cd /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319(Framework框架路径根据实际情况更改)
- 开始注册:Regasm com组件路径.dll /tlb: mycom.tlb /codebase
com组件是.net c#语言所编写,所以目标电脑一定要先安装好对应版本的.net framework框架,否则会报找不到依赖环境。