C#创建并调用dll

news2024/11/26 22:35:07

文章目录

      • 1.VS2019创建C#主程序
      • 2.编译主程序
      • 3.添加类库工程,并添加计算逻辑
      • 4.给主程序添加引用项
      • 5.重新编译主程序
      • 6.主程序添加测试逻辑

1.VS2019创建C#主程序

在这里插入图片描述

2.编译主程序

debug目录下生成exe:
在这里插入图片描述

3.添加类库工程,并添加计算逻辑

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加计算逻辑:

namespace Calculate
{
    public class CalculateAssistant
    {
        // +
        public double Sum(double a, double b)
        {
            return a + b;
        }
        public Int64 Sum(Int64 a, Int64 b)
        {
            return a + b;
        }
        // -
        public double Sub(double a, double b)
        {
            return a - b;
        }
        public Int64 Sub(Int64 a, Int64 b)
        {
            return a - b;
        }
        // *
        public double Multiple(double a, double b)
        {
            return a * b;
        }
        public Int64 Multiple(Int64 a, Int64 b)
        {
            return a * b;
        }
        // /
        public double Divide(double a, double b)
        {
            return a / b;
        }
        public Int64 Divide(Int64 a, Int64 b)
        {
            return a / b;
        }
    }
}

4.给主程序添加引用项

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

5.重新编译主程序

在这里插入图片描述
先生成依赖项目,再生成主程序:
在这里插入图片描述

debug目录增加了dll文件:
在这里插入图片描述

6.主程序添加测试逻辑

using Calculate;

namespace Main
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Add_Click(object sender, EventArgs e)
        {
            Calculate.CalculateAssistant calc = new CalculateAssistant();
            double result = calc.Sum(double.Parse(textBox1.Text),double.Parse(textBox2.Text));
            textBox3.Text = result.ToString();            
        }

        private void Sub_Click(object sender, EventArgs e)
        {
            Calculate.CalculateAssistant calc = new CalculateAssistant();
            double result = calc.Sub(double.Parse(textBox1.Text), double.Parse(textBox2.Text));
            textBox3.Text = result.ToString();
        }

        private void Multi_Click(object sender, EventArgs e)
        {
            Calculate.CalculateAssistant calc = new CalculateAssistant();
            double result = calc.Multiple(double.Parse(textBox1.Text), double.Parse(textBox2.Text));
            textBox3.Text = result.ToString();
        }

        private void Divide_Click(object sender, EventArgs e)
        {
            Calculate.CalculateAssistant calc = new CalculateAssistant();
            double result = calc.Divide(double.Parse(textBox1.Text), double.Parse(textBox2.Text));
            textBox3.Text = result.ToString();
        }
    }
}

在这里插入图片描述

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

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

相关文章

ROS 多机器人导航RVIZ环境的配置

文章目录 前言一、添加多个2D Pose Estimate/2D nav Goal二、RVIZ的其他配置1.RobotModel 总结 前言 前文ROS Turtlebot3多机器人编队导航仿真写了多机器人呢导航的代码实现,本文主要说明,RVIZ导航环境的配置,如何添加多个2D Pose Estimate/…

CODING DevOps产品认证笔记

1.敏捷&精益&瀑布概述 1.1 敏捷软件开发 第一章敏捷软件开发背景 背景:乌卡时代 易变性:当今世界的变化越来越多越来越快,越来越不可预测。不确定性:历史上的任何一个时代所带来的经验已经无法为当今世界的所有变化提供参照。复杂性:事物间的…

Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)

export default { data() { return { iBeaconDevices: [], // 存储搜索到的iBeacon设备 deviceId: [], data: [], url: getApp().globalData.url, innerAudioContext: n…

【MATLAB源码-第79期】基于蚯蚓优化算法(EOA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 蚯蚓优化算法(Earthworm Optimisation Algorithm, EOA)是一种启发式算法,灵感来源于蚯蚓在自然界中的行为模式。蚯蚓优化算法主要模仿了蚯蚓在寻找食物和逃避天敌时的行为策略。以下是蚯蚓…

Python Numpy.einsum

、 见 https://zhuanlan.zhihu.com/p/27739282

程序员如何悄悄拔尖,然后惊艳四座?

谁最初还不是个血气方刚、胸怀抱负的有志青年了? 渐渐的,被岁月磨平棱角,被生活冲淡理想,如今的你还有几分似从前? 你是否,不安现状、焦虑未来、忙忙碌碌没有方向? 不甘平庸?不想摸鱼&#…

论文技巧2

目录 1 找基准模型2 找模块小论文的三个实验怎么做对比试验Sota的挑选对⽐论⽂结果的获取3 消融实验什么是消融实验怎么做消融实验4 实例分析怎么做实例分析小论文必备三张图1 找基准模型 2 找模块 小论文的三个实验 怎么做对比试验

桂院校园导航 | 云上高校导航 云开发项目 二次开发教程 1.3

Gitee代码仓库:桂院校园导航小程序 GitHub代码仓库:GLU-Campus-Guide 演示视频 中国大学生计算机设计大赛-移动应用与开发-云上高校导航 升级日志 1.3 优化了小程序的数据存储方式,对部分页面进行了调整,调整了功能和代码。 引…

sscanf提取相应字符到数组

代码如下 #include<stdio.h> #include<string.h>int main(int argc, char const *argv[]) {char buf[128] {0};int m1 0, m2 0;int s1 0, s2 0;char lrc[128] "";sscanf("[02:16.33][04:11.44]我想大声宣布对你恋恋不舍","[%*1d%d…

【Pytorch笔记】7.torch.nn (Convolution Layers)

我们常用torch.nn来封装网络&#xff0c;torch.nn为我们封装好了很多神经网络中不同的层&#xff0c;如卷积层、池化层、归一化层等。我们会把这些层像是串成一个牛肉串一样串起来&#xff0c;形成网络。 先从最简单的&#xff0c;都有哪些层开始学起。 Convolution Layers -…

YOLO目标检测——谢韦尔钢材缺陷检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;钢材质量控制、钢材缺陷检测数据集说明&#xff1a;谢韦尔钢材缺陷检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(jso…

交换机如何配置BGP协议

环境&#xff1a; 华为交换机 华三交换机 问题描述&#xff1a; 交换机如何配置BGP协议 解决方案&#xff1a; 华三交换机上配置案例 1.配置BGP协议&#xff0c;可以按照以下步骤进行&#xff1a; 登录交换机&#xff1a;使用SSH、Telnet或控制台等方式登录到华三交换…

SpringBoot整合Redis使用基于注解的缓存

环境准备 注解 EnableCaching CacheConfig CacheConfig 提供了一种在类级别共享公共缓存相关设置的机制。 | 参数 | 作用 | | | — | — | — | | cacheNames | 使用在类上的默认缓存名称 | | | keyGenerator | 用于类的默认KeyGenerator的bean名称 | | | cacheManager | 自定…

Linux内核中的内存管理剖析,干货收藏!

内存管理的主要工作就是对物理内存进行组织&#xff0c;然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处&#xff1a; 用户进程可以直接操作内核对应的内存&#xff0c;破坏内核运行。 用户进程也…

【小黑送书—第七期】>>程序员To架构师?一起来看架构师系列书籍推荐

相信大家都对未来的职业发展有着憧憬和规划&#xff0c;要做架构师、要做技术总监、要做CTO。对于如何实现自己的职业规划也都信心满满&#xff0c;努力工作、好好学习、不断提升自己。 相信成为一名优秀的架构师是很多程序员的目标&#xff0c;架构师的工作包罗万象&#xff…

工业智能网关:工业物联网智慧连接

工业智能网关是工业互联网的核心设备之一&#xff0c;它承担着连接设备、搜集数据、分析数据、设备控制和实现设备智能化管理的重要任务。随着工业互联网的快速发展&#xff0c;工业智能网关的作用变得越来越重要。 计讯物联5G/4G工业智能网关是一种连接工厂设备与互联网的关键…

如何优化谷歌商店里应用的评分评论1

低的评分和评论会引起的连锁反应&#xff0c;会对搜索和浏览可见性产生负面影响&#xff0c;同时拖累我们围绕应用商店优化所做的一切。所以解决负面评论的问题并提高应用的评分&#xff0c;对于提高应用商店的知名度至关重要。 1、分析应用评论。 我们需要分析应用程序当前获…

java学习part03基本类型

22-变量与运算符-标识符的使用_哔哩哔哩_bilibili 1.标识符&#xff08;变量&#xff09;命名规则 2.变量类型 3.整型 4.浮点型 5.char字符 6.布尔boolean 7.基本类型的自动提升 8.强制转换 9.String String只能连接 会把其他类型的表面量转成字符串比如"true" &…

深度学习入门(第三天)——卷积神经网络

卷积神经网络应用领域 CV领域发展&#xff1a; 比赛中预测错误率的百分比&#xff0c;每年逐步下降。Human是人类肉眼的识别能力&#xff0c;2016年开始已经远高于人类肉眼死别能力&#xff0c;后面就取消了该方向的比赛了。 检测任务&#xff1a; 分类与检索&#xff1a; 分类…

【实习】modbus

介绍 详解Modbus通信协议—清晰易懂 Modbus协议是一个master/slave架构的协议。有一个节点是master节点&#xff0c;其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB网络中&#xff0c;只有被指定为主节点的节点可以启动一个命令…