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中,属性用于提供有关HTML元素的附加信息。在这篇文章中你将学习多个HTML属性,它们可以增强网站的视觉吸引力。 接下来开始吧!🚀 Accept 属性 您可以将accept属性与<input>元素(仅用于文件类型ÿ…...
基于运算放大器的电压采集电路
一、运算放大器 运放推导的两个重要概念:虚短、虚断。 1、差分放大器 以差分放大器为例进行推导分析。 虚断–运放的"-“端、”“端的引脚电流接近为0; 根据基尔霍夫电流定律可知:iR1iRF,iR2iR3; iR1(Ui1-(V-…...
数字图像处理(实践篇) 十六 基于分水岭算法的图像分割
目录 一 分水岭算法 二 利用OpenCV实现分水岭算法的过程 三 实践 一 分水岭算法 基于任何灰度图像都可以视为地形表面,其中高强度表示山峰和山丘,而低强度表示山谷。首先,开始用不同颜色的水(标签)填充每个孤立的山…...
快速学习PyQt5的高级自定义控件
Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图(Item View) 快速弄懂Pyqt5的4种项目部件(Item Widget) 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...
Python中读写(解析)JSON文件的深入探究
目录 一、引言 二、如何读取JSON文件 三、如何写入JSON文件 四、如何解析JSON字符串 五、错误处理和异常处理 六、使用第三方库提高效率 七、总结 一、引言 在Python中,我们经常使用JSON(JavaScript Object Notation)格式来存储和传输…...
我获取股票和期货数据的常用函数
记录一下获取数据所使用的函数,以防止遗忘和方便查找。 # 获取掘金的数据 # 需要打开并登陆掘金终端 def get_data_juejin(symbol"bu2112",start"2021-8-1",end"2021-8-30 23:00:00",frequency"1800s",fields"eob,sy…...
高并发场景下的httpClient使用优化技巧
1. 背景 我们有个业务,会调用其他部门提供的一个基于http的服务,日调用量在千万级别。使用了httpclient来完成业务。之前因为qps上不去,就看了一下业务代码,并做了一些优化,记录在这里。 先对比前后:优化…...
用php上传图片到阿里云oss
如果你想自动创建目录并将文件上传到新的目录下,你可以使用阿里云 OSS 的 createObject 方法来实现。下面是更新后的示例代码: php <?php require_once __DIR__ . /vendor/autoload.php; // 引入 SDKuse OSS\OssClient; use OSS\Core\OssException;…...
服务器适合哪些使用场景_Maizyun
服务器适合哪些使用场景 在当今的数字化时代,服务器作为互联网基础设施的核心组件,被广泛应用于各种场景。本文将探讨服务器适合哪些使用场景。 一、Web服务器 Web服务器是服务器中最常见的一种,用于托管和运行网站。它负责处理来自客户端…...
发布“最强”AI大模型,股价大涨,吊打GPT4的谷歌股票值得投资吗?
来源:猛兽财经 作者:猛兽财经 谷歌在AI领域的最新进展,引发投资者关注 在谷歌-C(GOOGL)谷歌-A(GOOG)昨日发布了最新的AI大模型Gemini后,其股价就出现了大幅上涨,更是引发了投资者的密切关注&a…...
年度工作总结怎么写?掌握这些年终总结万能公式,让你的报告出彩无比!
光阴似箭,日月如梭,时间总是不疾不徐地向前奔去,转眼就来到了2023年的最后一个月,12月一到,上班族和打工人又要开始忙活工作总结的事情~ 工作总结,不仅是一年工作的回顾,更是未来规划的起点。你…...
常用Nmap脚本
端口扫描类脚本 Nmap是一款非常流行的端口扫描工具,它可以帮助渗透测试工程师识别目标网络上开放的端口,并提供有关这些端口的详细信息。Nmap还提供了一系列基于脚本的功能,这些脚本可以扩展Nmap的功能,使其能够更深入地探测目标网…...
在pom.xml中添加maven依赖,但是类里面import导入的时候报错
问题: 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 : http://www.heenes.de/ro/material/arm/DEN0018A_neon_programmers_guide_en.pdf csdn博文1,基础案例: https://blog.csdn.net/kakasxin/article/details/103912832? csdn博文2,内部函数: ht…...
java中ReentrantLock的实现原理是什么?
ReentrantLock 的实现原理主要涉及到两个关键概念:同步器(Sync)和 AQS(AbstractQueuedSynchronizer,抽象队列同步器)。 ReentrantLock 使用 AQS 来实现可重入锁的机制。AQS 是 Java 并发包中的一个抽象基类…...
C语言精选——选择题Day40
第一题 1. int a[10] {2,3,5}, 请问a[3]及a[3]之后的数值是() A:不确定的数据 B:5 C:0 D:0xf f f f f f f f 答案及解析 C 数组的不完全初始化,会自动把没初始化的部分初始化为0; 第…...
大屏适配方案一scale()
背景 在做大屏可视化项目的时候,一般设计稿会设计成1920 * 1080,但是页面写死1920 * 1080在2k、4k等分辨率的屏幕下是不适配的。 方案一:css3的缩放属性transform以及scale() 在做项目之前我们需要搞清楚客户的数据可视化平台需要在什么屏幕…...
ElevenLabs成年男性语音定制全流程(含Stability Score阈值表+Voice Embedding相似度热力图)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs成年男性语音定制的核心价值与适用边界 ElevenLabs 的成年男性语音定制能力,本质上是通过深度神经声码器与说话人嵌入(speaker embedding)联合建模实现的高…...
2026届最火的五大AI论文助手推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 由于人工智能生成内容也就是AIGC被广泛运用,互联网里到处都是由AI生成的&#x…...
取号机嵌入式扫码模组选型与集成实战:以4500R为例破解复杂场景应用难题
1. 项目概述:取号机扫码模组的选型困境与破局在智慧政务大厅、银行网点、医院门诊这些我们日常办事的高频场景里,取号机早已不是新鲜事物。但不知道你有没有留意过,现在越来越多的取号机旁边,除了传统的按键和触摸屏,还…...
怎样快速恢复损坏视频:3步实用MP4修复方案
怎样快速恢复损坏视频:3步实用MP4修复方案 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否经历过相机突然断电导致视频文件损坏?或者传…...
基于NXP芯片的跳频技术如何构建高安全汽车无钥匙进入系统
1. 项目概述与核心价值最近几年,汽车的无钥匙进入与启动系统(PEPS)几乎成了新车的标配,但随之而来的安全挑战也日益严峻。你可能听说过,甚至亲身经历过,不法分子利用“中继攻击”设备,在车主不知…...
Linux微信小程序开发终极指南:从零搭建完整开发环境
Linux微信小程序开发终极指南:从零搭建完整开发环境 【免费下载链接】wechat-web-devtools-linux 适用于微信小程序的微信开发者工具 Linux移植版 项目地址: https://gitcode.com/gh_mirrors/we/wechat-web-devtools-linux 还在为Linux系统无法进行微信小程序…...
MacType终极指南:彻底解决Windows字体模糊问题的免费神器
MacType终极指南:彻底解决Windows字体模糊问题的免费神器 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 你是否厌倦了Windows系统上模糊不清的字体显示?长期面对锯齿边缘的…...
从零开始:如何在Windows电脑上完美使用Switch手柄的完整教程
从零开始:如何在Windows电脑上完美使用Switch手柄的完整教程 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 你是否曾经想过在Windows电脑上…...
MoviePilot连接TMDB异常的终极诊断指南:5步快速排查与完整解决方案
MoviePilot连接TMDB异常的终极诊断指南:5步快速排查与完整解决方案 【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot MoviePilot作为NAS媒体库自动化管理工具,其核心功能依赖TheMov…...
security.txt项目贡献指南:如何参与开源安全标准制定
security.txt项目贡献指南:如何参与开源安全标准制定 【免费下载链接】security-txt A proposed standard that allows websites to define security policies. 项目地址: https://gitcode.com/gh_mirrors/se/security-txt security.txt是一项重要的开源安全…...
