C#简单创建DLL文件并调用

DLL是Dynamic Link Library的缩写,意为动态链接库。动态链接库其实是由编译器将一系列相关的类型编译、链接并封装成一个独立的文件,与对其进行调用的程序分开。这样一个独立的文件相当于程序的一个模块,如果需要对程序进行更新,只需更新指定的模块而不影响程序的其他部分。本实例编写了一个简单的DLL文件,并在窗体应用程序中对其进行调用

【实现过程】
(1)VS2022创建新项目,在弹出的“创建新项目”窗口的“项目模板”列表中选择“类库(.NET Framework) C#”选项,将名称栏中的项目名称改为ClassLibrary

(2)在ClassLibrary项目创建完成后,系统会自动生成一个名为Class1的类,在“解决方案资源管理器”中的ClassLibrary项目下面的Class1.cs选项上单击鼠标右键,在弹出的菜单中选择“重命名”菜单项,这时将Class.cs文件改名为MyClass.cs

3)在项目列表中双击MyClass.cs选项,显示MyClass.cs中的代码,并在MyClass类中添加显示hello world的如下代码后,解决方案窗口右键ClassLibrary,点击生成。在项目Debug文件夹下生成了dll文件
namespace ClassLibrary                                        //定义ClassLibrary命名空间
     {
         public class MyClass                                      //定义MyClass类
         {
             public void HelloWorld()                              //HelloWorld函数
             {
                 System.Windows.Forms.MessageBox.Show("hello world");//弹出消息对话框
             }
         }
     }

(4)在当前解决方案中添加一个新项目,在弹出的“添加---新项目”窗口列表中选择““Windows窗体应用(.NET Framework)”选项,将名称栏中的项目名称改为WindowsFormsApplication

(5)为窗体应用程序WindowsFormsApplication项目添加对ClassLibrary项目所创建的类库的引用。在WindowsFormsApplication项目的引用选项下单击鼠标右键,在弹出的菜单中选择“添加引用” 

(5)在弹出的“添加引用”窗口中选择“浏览”选项卡,在查找范围下拉列表框中选择ClassLibrary项目所生成的DLL文件ClassLibrary.dll路径,该文件位于...........ClassLibrary\bin\Debug目录下。选择好DLL文件后单击右下角的“添加”按钮.

 

代码中引用: 

 (6)在WindowsFormsApplication项目的From1.cs文件下Form1类的构造函数中添加代码如下:
public Form1()                                     //Form1窗体构造函数
     {
         InitializeComponent();                         //窗体初始化函数
         MyClass myClass = new MyClass();               //实例化MyClass类
         myClass.HelloWorld();                          //调用MyClass类的HelloWorld方法
     }

启动 WindowsFormsApplication窗体应用程序:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32-C3第二路串口(非调试)串口打通(1)

1. 概述与引脚复用 《ESP32-C3 系列芯片技术规格书》中提到,ESP32-C3系列芯片中有两路串口。 第1路串口就是常用的调试串口,在笔者使用的ESP32-C3-DevKitC-02开发板中,这一路串口通过CP2102 USB转UART桥芯片与电脑的USB口相连接,…

42 线程池

一种线程使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性能。线程池维护多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价,线程池不仅能保证内核的充分利用&#xf…

redis中的双写一致性问题

双写一致性问题 1.先删除缓存或者先修改数据库都可能出现脏数据。 2.删除两次缓存,可以在一定程度上降低脏数据的出现。 3.延时是因为数据库一般采用主从分离,读写分离。延迟一会是让主节点把数据同步到从节点。 1.读写锁保证数据的强一致性 因为一般放…

数据结构------栈的介绍和实现

目录 1.栈的一些初步认识 2.栈的实现 3.相关的函数介绍 (1)栈的初始化 (2)栈的销毁 (3)栈的数据插入 (6)判断是否为空 (7)栈的大小 4.栈的实现完整…

【数据结构(邓俊辉)学习笔记】列表01——从向量到列表

文章目录 0.概述1. 从向量到列表1.1 从静态到动态1.2 从向量到列表1.3 从秩到位置1.4 列表 2. 接口2.1 列表节点2.1.1 ADT接口2.1.2 ListNode模板类 2.2 列表2.2.1 ADT接口2.2.2 List模板类 0.概述 学习了向量,再介绍下列表。先介绍下列表里的概念和语义&#xff0…

【HM】DevEco Studio如何使用代码编程AI助手

大家可能都有用过或了解过github copilot插件,确实为我们编码智能、提升开发效率有很大的帮助。推荐两款国产的ai编程插件,分别是华为的CodeArts Snap和阿里的通义灵码。 DevEco 中如何安装通义灵码? 一、下载通义灵码离线安装包 打开官网…

每日OJ题_贪心算法二⑤_力扣870. 优势洗牌(田忌赛马)

目录 力扣870. 优势洗牌(田忌赛马) 解析代码 力扣870. 优势洗牌(田忌赛马) 870. 优势洗牌 难度 中等 给定两个长度相等的数组 nums1 和 nums2,nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引…

golang学习笔记(内存逃逸分析)

golang的内存逃逸 逃逸分析( Escape analysis) 是指由编译器决定内存分配的位置, 不需要程序员指定。 函数中申请一个新的对象。 如果分配在栈中, 则函数执行结束可自动将内存回收;如果分配在堆中, 则函数…

解决layui的bug 在layui tree 组件中 禁用选中父节点后自动选中子节点功能

最近做权限管理后台,用了layui tree 组件,发现选中了父节点后,自动选中了子节点。不满足现实业务需求。所以微调了下源代码。 在用树形组件中,在用文档中 tree.setChecked(demoId, [2, 3]); //批量勾选 id 为 2、3 的节点 用这句…

linux 服务器利用阿里网盘API实现文件的上传和下载

文章目录 背景脚本初始化 阿里云盘API工具 aligo安装aligoaligo教程实战parse.py 演示上传文件上传文件夹下载文件下载文件夹 背景 最近在用ubuntu系统做实验,而ubuntu 系统的文件上传和下载操作很麻烦; 于是便打算使用阿里网盘的API 进行文件下载与上传…

腾锐D2000-8 MXM VPX,全国产,可广泛应用于边缘计算网关、入侵检测、VPN、网络监控等等应用领域

腾锐D2000-8 MXM VPX 1. 概述 XMVPX-108 是一款基于飞腾 D2000/8 处理器的低功耗逻辑运算和图形处理 VPX 刀片, 板贴 32GB DDR4 内存,搭载飞腾 X100 套片,满足通用 IO 接口功能。GPU 采用 MXM 小型插卡形式, 搭配 8GB 显卡。提供…

NIO和NIO.2对比

Java NIO (New Input/Output) 是从Java 1.4版本开始引入的一个新的I/O API,用于替代原来的BIO(Blocking I/O)API。NIO提供了更加灵活和高效的网络通信方式,特别适合于高吞吐量的网络编程。NIO的主要特点是非阻塞模式,它…

3.4 无关、基和维度

这一节是关于子空间的真实大小。对于 m n m\times n mn 的矩阵,它有 n n n 个列,但是它真正的维数不一定为 n n n,维数可以由无关列的个数来得到。列空间的实际维度就是秩 r r r。 无关的概念是用于向量空间中的任意向量 v 1 , . . . ,…

【LAMMPS学习】八、基础知识(5.7)Drude感应偶极子

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

人工智能|推荐系统——工业界的推荐系统之召回

基于物品的协同过滤 ⽤索引,离线计算量⼤,线上计算量⼩ Swing额外考虑重合的⽤户是否来⾃⼀个⼩圈⼦,两个⽤户重合度⼤,则可能来⾃⼀个⼩圈⼦,权重降低。 基于用户的协同过滤 同样是离线计算索引,在线召回的流程 离散特征处理 Embedding 层参数数量=向量维度 类别数量 矩

DS高阶:图论算法经典应用

一、最小生成树(无向图) 在了解最小生成树算法之前,我们首先要先了解以下的准则: 连通图中的每一棵生成树,都是原图的一个极大无环子图,即:从其中删去任何一条边,生成树就不在连通&a…

mysql查询数据不对

sum(id)是算id这一列的数值总和,无论主键与否,sum都是算数值总和 count(id)或count(*)是算当前列的行数,id是主键才行

FIFO Generate IP核使用——AXI接口FIFO简介

AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4、AXI3和AXI4-Lite。除了Native接口FIFO支持的应用外,AXI FIFO还可以用于AXI系统总线和点对点高速应用。 AXI接口FIFO不支持Builtin FIFO和 Shift Register FIFO配置。 当…

WebSocket 多屏同显和异显

介绍 多屏同显:通过在一个应用上进行操作之后,另一个应用也能跟着一起发生改变,例如app1播放了晴天这首音乐,那么app2也要同步播放这首音乐,确保所有屏幕显示的内容完全相同。多屏异显:每个屏幕可以显示不同的内容,或者在内容更新时存在一定的延迟,而不需要严格保持同步…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(四)

本系列课程,将重点讲解Phpsploit-Framework框架软件的基础使用! 本文章仅提供学习,切勿将其用于不法手段! 继续接上一篇文章内容,讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 当我们牢记登陆账户、…