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:由于我是自学菜鸟,文章可能有很多不足之处,如果有大佬路过,欢迎指点!!!)

  • 18
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
VS2019中使用C#进行Socket异步通信的步骤如下: 1. 创建一个新的C#控制台应用程序项目。 2. 在项目中添加一个新的类文件,用于处理Socket通信的逻辑。 3. 在类文件中引入System.Net.Sockets命名空间,以便使用Socket相关的类和方法。 4. 创建一个Socket对象,并设置其属性和参数,如IP地址、端口号、协议类型等。 5. 使用Socket对象的BeginConnect方法发起异步连接请求,传入服务器的IP地址和端口号作为参数。 6. 创建一个回调函数,用于处理连接请求的结果。回调函数的参数是IAsyncResult类型,可以通过它获取连接状态和错误信息。 7. 在回调函数中,使用EndConnect方法结束异步连接请求,并检查连接是否成功建立。 8. 如果连接成功建立,可以开始进行数据的发送和接收操作。 9. 使用Socket对象的BeginSend和BeginReceive方法发起异步发送和接收请求,传入要发送或接收的数据作为参数。 10. 创建两个回调函数,分别用于处理发送和接收操作的结果。回调函数的参数是IAsyncResult类型,可以通过它获取发送或接收的状态和错误信息。 11. 在发送和接收的回调函数中,使用EndSend和EndReceive方法结束异步发送和接收请求,并处理发送或接收到的数据。 12. 可以根据需要重复执行步骤9到11,实现连续的数据发送和接收。 13. 当不再需要进行通信时,使用Socket对象的Close方法关闭Socket连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值