C#中创建DLL(动态链接库)及其使用
一、DLL 与应用程序
动态链接库(也称为 DLL ,即为“ Dynamic Link Library ”的缩写)是 Microsoft Windows 最重要的组成要素之一,打开 Windows 系统文件夹,你会发现文件夹中有很多 DLL 文件, Windows 就是将一些主要的系统功能以 DLL 模块的形式实现。
动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其它 DLL 调用来完成一定操作的函数 ( 方法。注: C# 中一般称为“方法” ) ,但这些函数不是执行程序本身的一部分,而是根据进程的需要按需载入,此时才能发挥作用。
DLL 只有在应用程序需要时才被系统加载到进程的虚拟空间中,成为调用进程的一部分,此时该 DLL 也只能被该进程的线程访问,它的句柄可以被调用进程所使用,而调用进程的句柄也可以被该 DLL 所使用。在内存中,一个 DLL 只有一个实例,且它的编制与具体的编程语言和编译器都没有关系,所以可以通过 DLL 来实现混合语言编程。 DLL 函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有。
下面列出了当程序使用 DLL 时提供的一些优点: [1]
1) 使用较少的资源
当多个程序使用同一个函数库时, DLL 可以减少在磁盘和物理内存中加载的代码的重复量。这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在 Windows 操作系统上运行的程序。
2) 推广模块式体系结构
DLL 有助于促进模块式程序的开发。这可以帮助您开发要求提供多个语言版本的大型程序或要求具有模块式体系结构的程序。模块式程序的一个示例是具有多个可以在运行时动态加载的模块的计帐程序。
3) 简化部署和安装
当 DLL 中的函数需要更新或修复时,部署和安装 DLL 不要求重新建立程序与该 DLL 的链接。此外,如果多个程序使用同一个 DLL ,那么多个程序都将从该更新或修复中获益。当您使用定期更新或修复的第三方 DLL 时,此问题可能会更频繁地出现。
二、 DLL 的创建及调用
1、创建:新建 -> 项目->类库 ,名称为:dlltest
2、添加代码
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace dlltest{public class Class1{//你自己要编译成动态库的程序,以下为示例public void ShowMessage(string text){Console.WriteLine("你调用了动态链接库!");MessageBox.Show(text,"消息提示");}}
}
然后生成解决方案,在工程bin/Debug下即可找到名称为dlltest.dll的文件
3、使用:
1)添加引用
右击项目-添加引用-浏览 找到本地的dll文件
2)using 该dll文件里面代码的名称空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using 要引用的dll文件的命名空间
using dlltest;namespace DllExample
{class Program{static void Main(string[] args){dlltest.MyClass myTest = new dlltest.MyClass();myTest.ShowMessage();}}
C#中创建DLL(动态链接库)及其使用相关推荐
- VC创建DLL动态链接库及其调用
1.1 创建dll项目 1.2 为dll项目编写源文件 头文件dllDemo.h extern "C" _declspec(dllexport) int Sum(int a,int ...
- 在VC++中创建DLL文件并加载
一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A DLL that export some symbol (s ...
- 创建DLL动态链接库——声明导出法
DLL声明导出法:是通过使用__declspec(dllexport),添加到需要导出的函数前,进行声明. 头文件定义如下(OPdll.h): 源文件定义如下(OPdll.cpp): 通过以上两个文件 ...
- 使用Visual studio中创建C++的静态链接库.lib文件附使用方式
如何在Qt中使用静态库.lib(和VS一样,仅仅是操作方式略有差异) 如何在VS中创建.dll动态链接库.dll中函数与类的导出用__declspec(dllexport) 如何在Qt和VS中使用动态 ...
- 怎么创建dllwenjian_如何创建DLL文件
动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的.所有的C语言标准库函数都存放在某一函数库中.在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添 ...
- 如何交换数据:10 分钟为 MQL5 创建 DLL
事实上,很少有开发人员确切知道如何编写简单的 DLL 库,他们也不清楚绑定不同系统的特性. 通过多个示例,我将展示在 10 分钟内创建简单 DLL 的整个过程,并讨论我们绑定实施的一些技术细节.我们将 ...
- C++ dll 动态链接库的创建与调用
/********************************************************/ /*DLL中的函数定义*/ /*计算x+y的值*/ int __declspec( ...
- 怎样在C++Builder中创建使用DLL
动态链接库(DLL)是Windows编程常遇到的编程方法,下面我就介绍一下在 BCB (C++Builder下简称BCB) 中如何创建使用DLL和一些技巧. 一.创建: 使用BCB File|NEW建 ...
- VS2019-C++创建和调用DLL动态链接库(傻瓜式教程)
前言:查了好久好久网上的资料C++调用动态链接库,试了好多方法(直接创建DLL.空项目创建的)都多多少少有些问题,最后自己不断摸索着成功了,还是很开心的,接下来把最清晰的步骤分享给大家(C++新人,有 ...
最新文章
- cdr怎样把一张图片随意变形_PS手记|移动工具的使用与画布的变形
- java enumerator_简单介绍java Enumeration
- python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...
- Linux下常用日志分析工具
- java isight zmf_isight集成catia和abaqus,nastran流程详解
- vs2010 sp1 安装 Silverlight4_Tools 提示 错误 解决办法
- Redhat5下haproxy+keepalived+nginx配置笔记
- splitpane如何设置竖条的宽度_如何用 CSS 画三角形和箭头
- Fortinet 修复严重漏洞,可导致未认证黑客以最高权限执行任意代码
- ECMAScript 类型转换
- 双击java安装包没有反应_eclipse安装包双击没反应怎么回事?
- vue实现导出excel的两种方式
- 共享指定文件给指定电脑
- mongodb4.4 windows环境安装
- 安装软件时,“Windows Installer Coordinator”一直循环
- Springboot上传文件时提示405
- Android 5.0 and later only support position-independent executables
- PC端“交易猫”网站爬虫项目
- 【求职】陌陌 Java 方向面经
- HD1201 18岁生日