C#学习笔记002——VS2019 创建COM组件详细步骤

一、创建新项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、更改项目属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、编写导出接口

(1)新建一个“接口类”
在这里插入图片描述

(2)为接口打上Guid、InterfaceType特性,Guid必须唯一
在这里插入图片描述
粘贴,并去掉“{”和“}”
在这里插入图片描述

[Guid(“A0CF129B-2AD0-4822-AC95-CC76E1274030”),InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]

InterfaceType表求向COM公开的方式,这里选择为以调度的方式向COM公开。

对了,不能忘了加上“using System.Runtime.InteropServices;”不然,Guid是会报错的。

(3)为接口创建方法,并为方法打上DispId特性,特性内数字为方法序号。[DispId]是函数的标识。如果有多个函数可相应的在函数前面加[DispId(2)], [DispId(3)]…
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.InteropServices;

namespace ClassLibrary1
{
    [Guid("A0CF129B-2AD0-4822-AC95-CC76E1274030"),InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    interface ABCD_Interface
    {
        [DispId(1)]
        void ShowMessage();

        [DispId(2)]
        int add(int a,int b);
    }
}

四、新建一个类去继承刚刚的导出接口

(1)新建类的方法与前面类似,如下图
在这里插入图片描述

新建完之后,这里就可以看到多出一个类
在这里插入图片描述

(2)给打上Guid、InterfaceType、ComSourceInterfaces特性,并继承上一步编写的导出接口。
其中,[Guid(“…”),…]引号内的字符串仍然是按照前面的方法,通过“命令提示符获取”

在这里插入图片描述
在这里插入图片描述

(3)编写具体方法内的代码

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace ClassLibrary1
{
    [Guid("14947C7E-BA27-4F26-8802-B45E2B0DF3D4"),
     ClassInterface(ClassInterfaceType.None),
     ComSourceInterfaces(typeof(ABCD_Interface))]
    class ABCD_Founction
    {
        void ShowMessage()
        {
            MessageBox.Show("ahahha");           
        }

        int add(int a, int b)
        {
            return a + b;
        }
    }
}

四、生成解决方案

法一:点击菜单栏的”生成“——>”生成解决方案“

法二:ctrl + B

五、PS:这里分享一个我遇到的报错

我是win10 系统,上面的一、二、三步骤进行完之后,生成解决方案时报错:
在这里插入图片描述

上网查了一下,说引起这个问题的根本原因是win10的管理员权限问题,在win10系统中安装程序时,系统都会各种要管理员权限才能执行。
然后给出的解决方案是:
WIN+R,运行对话框中输入gpedit.msc,开启组策略,然后一步步地在“计算机配置”-“Windows 设置”-“安全设置”-“本地策略”-“安全选项”,找到右侧的
“用户账户控制:以管理员批准模式运行所有管理员”这个项,你会看到这个项默认是启用的,把它设成禁用。 然后重启电脑!
加粗样式在这里插入图片描述

参考链接:
https://jingyan.baidu.com/article/c146541343fcd64afdfc4cd0.html
https://www.cnblogs.com/MRRAOBX/articles/5590760.html
https://www.cnblogs.com/bobshieh/p/5722371.html

(PS:本人目前还处于菜鸟阶段,这是我写的的二篇文章,写这篇文章也参考了不少资料,但上面的步骤是我一步一步一边做一边截图记录的,写这篇文章是因为我在网上找资料时,很多都编译不通过,遇到很多问题,对于一个自学的菜鸟来说,这打击无疑是巨大的,在这里先感谢我参考的那三个链接的主人,让我这个菜鸟往前迈了一小步,不然真的要崩溃!!!
这里,我写下这篇文章一方面是做个记录,另一个更重要的方面是希望能帮助哪些跟我一样有困扰的小伙伴们。)
(PS之又PS:前几天写的那篇 “C#创建DLL并调用” 的文章底下有浏览记录,超开心!!!)
(PS之又又PS:由于我是自学菜鸟,文章可能有很多不足之处,如果有大佬路过,欢迎指点!!!)

  • 19
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值