当前位置: 首页 > news >正文

dll动态链接库【C#】

1说明:

在C#中,dll是添加 【类库】生成的。

2添加C#的dll:

(1)在VS中新建一个Windows应用程序项目,并命名为TransferDll。
(2)打开Windows窗体设计器,从工具箱中为窗体添加相应的控件。
(3)在该应用程序的“解决方案资源管理”中的“引用”文件上单击鼠标右键,
在下拉列表中选择“添加引用”项,在弹出的“添加引用”对话框中选择“浏览”选项卡,
在该选项卡中选择AccountDll类库的DLL文件(示例36_02中的AccountDll.dll文件),
单击“确定”按钮。完成动态链接库的添加。
(4)在主窗体的加载事件中调用AccountDll类库的formShow方法,完成登录窗体的调用。代码如下:

 AccountDll.Account.public void formShow(string TName, out int n, out string u) 

"命名空间【AccountDll】对象class【Account】"
AccountDll.Account EncapClass = new AccountDll.Account();    //实例化动态链接库AccountDllprivate void Form1_Load(object sender, EventArgs e)
{int n = 0;                                        //定义变量,用于记录是否登录成功string u = "";                                    //定义变量,用于记录登录的用户名//在动态链接库中记当数据库的连接字符串"class内,静态变量"AccountDll.Account.M_str_sqlcon = "Data Source=.;Database=db_36;User id=sa;PWD=";EncapClass.formShow("tb_Logon", out n, out u);        //调用登录窗体if (n == 0)                                        //如果登录失败{Close();                                    //关闭主窗体}else{statusStrip1.Items[2].Text = u;                    //显示当前登录的用户名}
}

【TName】登录表的名称;【n】登录成功标识;【u】登录成功的用户名。

3添加非C#的dll:

在程序开发过程,有时会使用C#调用其他编程语言开发的DLL或调用Windows系统API函数,
由于这些DLL都属于非托管动态链接库(DLL),要调用非托管动态链接库(DLL)则需要使用DllImport属性。DllImport属性指示该属性化方法由非托管动态链接库(DLL)作为静态入口点公开,
并提供对从非托管DLL导出的函数进行调用所必需的信息。
作为最低要求,必须提供包含入口点的DLL的名称。在使用DllImport属性前,须引用命名空间System.Runtime.InteropServices。下面的示例说明如何使用DllImport属性调用非托管的DLL。代码如下:
[DllImport("KERNEL32.DLL", EntryPoint = "MoveFileW", SetLastError = True,
CharSet = CharSet.Unicode, ExactSpelling = True,
CallingConvention = CallingConvention.StdCall)]public static extern bool MoveFile(String src, String dst);
CallingConvention    指示入口点的调用约定
CharSet           指示如何向方法封送字符串参数,并控制名称重整
EntryPoint      指示要调用的DLL入口点的名称或序号
PreserveSig     指示签名是否为非托管入口点的直接转换
SetLastError    指示被调用方在从属性化方法返回之前是否调用 SetLastError Win32 API 函数

案例:

using System.Runtime.InteropServices;
namespace DelphiDll
{public partial class Form1 : Form{public class cCdll{[DllImport("projectdll.dll", EntryPoint = "Sum", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern double Sum(double x, double y);}public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){textBox3.Text = cCdll.Sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)).ToString();}}
}

相关文章:

dll动态链接库【C#】

1说明: 在C#中,dll是添加 【类库】生成的。 2添加C#的dll: (1)在VS中新建一个Windows应用程序项目,并命名为TransferDll。 (2)打开Windows窗体设计器,从工具箱中为窗体…...

Linux 系统设置cpu频率

source_code: https://github.com/emagii/cpufrequtils cpufreq-set - A small tool which allows to modify cpufreq settings.(修改内存频率的工具) cpufreq-set allows you to modify cpufreq settings without having to type e.g. “/sys/devices…...

git基本概念

一、版本控制概念 1.1 什么是版本控制 1.1.1 手动管理文件版本 1.1.2 版本控制软件 概念:版本控制软件是一个用来记录文件发生的变化,以便将来查阅特定版本修订情况的系统,有时也叫“版本控制系统”。通俗的理解就是把手工管理文件版本的方…...

多个HTML属性

在HTML中&#xff0c;属性用于提供有关HTML元素的附加信息。在这篇文章中你将学习多个HTML属性&#xff0c;它们可以增强网站的视觉吸引力。 接下来开始吧&#xff01;&#x1f680; Accept 属性 您可以将accept属性与<input>元素&#xff08;仅用于文件类型&#xff…...

基于运算放大器的电压采集电路

一、运算放大器 运放推导的两个重要概念&#xff1a;虚短、虚断。 1、差分放大器 以差分放大器为例进行推导分析。 虚断–运放的"-“端、”“端的引脚电流接近为0&#xff1b; 根据基尔霍夫电流定律可知&#xff1a;iR1iRF&#xff0c;iR2iR3&#xff1b; iR1(Ui1-(V-…...

数字图像处理(实践篇) 十六 基于分水岭算法的图像分割

目录 一 分水岭算法 二 利用OpenCV实现分水岭算法的过程 三 实践 一 分水岭算法 基于任何灰度图像都可以视为地形表面&#xff0c;其中高强度表示山峰和山丘&#xff0c;而低强度表示山谷。首先&#xff0c;开始用不同颜色的水&#xff08;标签&#xff09;填充每个孤立的山…...

快速学习PyQt5的高级自定义控件

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图&#xff08;Item View&#xff09; 快速弄懂Pyqt5的4种项目部件&#xff08;Item Widget&#xff09; 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...

Python中读写(解析)JSON文件的深入探究

目录 一、引言 二、如何读取JSON文件 三、如何写入JSON文件 四、如何解析JSON字符串 五、错误处理和异常处理 六、使用第三方库提高效率 七、总结 一、引言 在Python中&#xff0c;我们经常使用JSON&#xff08;JavaScript Object Notation&#xff09;格式来存储和传输…...

我获取股票和期货数据的常用函数

记录一下获取数据所使用的函数&#xff0c;以防止遗忘和方便查找。 # 获取掘金的数据 # 需要打开并登陆掘金终端 def get_data_juejin(symbol"bu2112",start"2021-8-1",end"2021-8-30 23:00:00",frequency"1800s",fields"eob,sy…...

高并发场景下的httpClient使用优化技巧

1. 背景 我们有个业务&#xff0c;会调用其他部门提供的一个基于http的服务&#xff0c;日调用量在千万级别。使用了httpclient来完成业务。之前因为qps上不去&#xff0c;就看了一下业务代码&#xff0c;并做了一些优化&#xff0c;记录在这里。 先对比前后&#xff1a;优化…...

用php上传图片到阿里云oss

如果你想自动创建目录并将文件上传到新的目录下&#xff0c;你可以使用阿里云 OSS 的 createObject 方法来实现。下面是更新后的示例代码&#xff1a; php <?php require_once __DIR__ . /vendor/autoload.php; // 引入 SDKuse OSS\OssClient; use OSS\Core\OssException;…...

服务器适合哪些使用场景_Maizyun

服务器适合哪些使用场景 在当今的数字化时代&#xff0c;服务器作为互联网基础设施的核心组件&#xff0c;被广泛应用于各种场景。本文将探讨服务器适合哪些使用场景。 一、Web服务器 Web服务器是服务器中最常见的一种&#xff0c;用于托管和运行网站。它负责处理来自客户端…...

发布“最强”AI大模型,股价大涨,吊打GPT4的谷歌股票值得投资吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 谷歌在AI领域的最新进展&#xff0c;引发投资者关注 在谷歌-C(GOOGL)谷歌-A&#xff08;GOOG&#xff09;昨日发布了最新的AI大模型Gemini后&#xff0c;其股价就出现了大幅上涨&#xff0c;更是引发了投资者的密切关注&a…...

年度工作总结怎么写?掌握这些年终总结万能公式,让你的报告出彩无比!

光阴似箭&#xff0c;日月如梭&#xff0c;时间总是不疾不徐地向前奔去&#xff0c;转眼就来到了2023年的最后一个月&#xff0c;12月一到&#xff0c;上班族和打工人又要开始忙活工作总结的事情~ 工作总结&#xff0c;不仅是一年工作的回顾&#xff0c;更是未来规划的起点。你…...

常用Nmap脚本

端口扫描类脚本 Nmap是一款非常流行的端口扫描工具&#xff0c;它可以帮助渗透测试工程师识别目标网络上开放的端口&#xff0c;并提供有关这些端口的详细信息。Nmap还提供了一系列基于脚本的功能&#xff0c;这些脚本可以扩展Nmap的功能&#xff0c;使其能够更深入地探测目标网…...

在pom.xml中添加maven依赖,但是类里面import导入的时候报错

问题&#xff1a; Error:(27, 8) java: 类TestKuDo是公共的, 应在名为 TestKuDo.java 的文件中声明 Error:(7, 23) java: 程序包org.apache.kudu不存在 Error:(8, 23) java: 程序包org.apache.kudu不存在 Error:(9, 23) java: 程序包org.apache.kudu不存在 Error:(10, 30) jav…...

【NEON】学习资料汇总

一、资料链接 Guide &#xff1a; http://www.heenes.de/ro/material/arm/DEN0018A_neon_programmers_guide_en.pdf csdn博文1&#xff0c;基础案例&#xff1a; https://blog.csdn.net/kakasxin/article/details/103912832? csdn博文2&#xff0c;内部函数&#xff1a; ht…...

java中ReentrantLock的实现原理是什么?

ReentrantLock 的实现原理主要涉及到两个关键概念&#xff1a;同步器&#xff08;Sync&#xff09;和 AQS&#xff08;AbstractQueuedSynchronizer&#xff0c;抽象队列同步器&#xff09;。 ReentrantLock 使用 AQS 来实现可重入锁的机制。AQS 是 Java 并发包中的一个抽象基类…...

C语言精选——选择题Day40

第一题 1. int a[10] {2,3,5}, 请问a[3]及a[3]之后的数值是&#xff08;&#xff09; A&#xff1a;不确定的数据 B&#xff1a;5 C&#xff1a;0 D&#xff1a;0xf f f f f f f f 答案及解析 C 数组的不完全初始化&#xff0c;会自动把没初始化的部分初始化为0&#xff1b; 第…...

大屏适配方案一scale()

背景 在做大屏可视化项目的时候&#xff0c;一般设计稿会设计成1920 * 1080&#xff0c;但是页面写死1920 * 1080在2k、4k等分辨率的屏幕下是不适配的。 方案一&#xff1a;css3的缩放属性transform以及scale() 在做项目之前我们需要搞清楚客户的数据可视化平台需要在什么屏幕…...

ABC系统实战指南:革新数字电路设计的逻辑综合与形式验证技术突破

ABC系统实战指南&#xff1a;革新数字电路设计的逻辑综合与形式验证技术突破 【免费下载链接】abc ABC: System for Sequential Logic Synthesis and Formal Verification 项目地址: https://gitcode.com/gh_mirrors/ab/abc 在现代集成电路设计流程中&#xff0c;工程师…...

OpCore-Simplify:实现OpenCore EFI自动化生成的黑苹果配置解决方案

OpCore-Simplify&#xff1a;实现OpenCore EFI自动化生成的黑苹果配置解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 副标题&#xff1a;告别…...

Vial-QMK键盘固件从入门到精通:打造专属机械键盘体验

Vial-QMK键盘固件从入门到精通&#xff1a;打造专属机械键盘体验 【免费下载链接】vial-qmk QMK fork with Vial-specific features. 项目地址: https://gitcode.com/gh_mirrors/vi/vial-qmk Vial-QMK是一款功能强大的开源键盘固件&#xff0c;为机械键盘爱好者提供了全…...

OpenRocket:开源火箭仿真平台的技术架构与实践指南

OpenRocket&#xff1a;开源火箭仿真平台的技术架构与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 价值定位&#xff1a;如何突破传统火箭设计…...

保姆级教程:用Cloudreve+Obsidian打造私人云笔记(附WebDAV配置避坑指南)

零基础构建私有知识库&#xff1a;Cloudreve与Obsidian的完美联姻 在信息爆炸的时代&#xff0c;如何高效管理个人知识资产已成为现代人的刚需。想象一下&#xff1a;你正在咖啡馆用iPad记录灵感&#xff0c;回到家打开电脑时这些想法已自动同步&#xff1b;出差途中用手机查阅…...

SGP30传感器数据不准?可能是你的I2C时序和初始化搞错了(避坑指南)

SGP30传感器数据异常排查指南&#xff1a;从硬件设计到软件调试的完整解决方案 1. 硬件设计中的常见陷阱与优化方案 SGP30作为一款高精度环境传感器&#xff0c;其硬件设计细节直接影响数据可靠性。许多开发者遇到的首要问题往往源于电路设计阶段被忽视的关键参数。 电源稳定性…...

STM32F103C8T6 HAL库驱动HC-SR04:用输入捕获双通道模式,精准测距不翻车

STM32F103C8T6 HAL库双通道捕获HC-SR04&#xff1a;高精度测距的工程实践 在智能小车避障、工业液位检测等嵌入式应用中&#xff0c;超声波测距模块的稳定性直接决定系统可靠性。传统单通道捕获方案常因计数器溢出、中断响应延迟等问题导致测量误差&#xff0c;而双通道输入捕获…...

【Mojo跨语言互操作权威配置白皮书】:实测TensorFlow/NumPy/Pandas三方库零报错接入方案

第一章&#xff1a;Mojo跨语言互操作的核心原理与架构定位Mojo并非传统意义上的独立运行时语言&#xff0c;而是以“Python超集”为设计原点、深度嵌入LLVM生态的系统级编程语言。其跨语言互操作能力不依赖FFI桥接层或胶水代码&#xff0c;而是通过统一的中间表示&#xff08;M…...

Cursor最新版0.44.11配置DeepSeek-R1模型保姆级教程(含报错解决方案)

Cursor 0.44.11深度适配DeepSeek-R1模型全流程指南 当技术爱好者第一次在Cursor中尝试调用DeepSeek-R1模型时&#xff0c;往往会遇到各种"水土不服"的情况。就像刚拿到新相机的摄影师需要调整镜头焦距一样&#xff0c;我们需要对Cursor进行精确配置才能充分发挥这个强…...

AgentCPM深度研报助手10分钟快速部署教程:基于CSDN星图GPU平台

AgentCPM深度研报助手10分钟快速部署教程&#xff1a;基于CSDN星图GPU平台 你是不是也遇到过这种情况&#xff1f;面对海量的行业报告、公司财报&#xff0c;想快速提炼核心观点&#xff0c;却感觉无从下手&#xff0c;或者需要花费大量时间手动整理。现在&#xff0c;有了AI助…...