1.概述
动态链接库(Dynamic Linked Library):将写好的函数存在库中,以供其他程序开发调用,调用方式为“动态的”。 
Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数; 
User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。 
静态库(Static Library):函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块 
组合起来创建最终的可执行文件(.EXE文件)。

2.动态库与静态库的区别
动态库DLL:在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中导出的函数。 
静态库LIB:编译时候与程序打包在一起,需要运行多个静态库函数时候,无法共享,会多次装载,浪费内存空间。 
简单的说,静态库和应用程序编译在一起,在任何情况下都能运行,而动态库是动态链接,顾名思义就是在应用程序启动的时候才会链接,所以,当用户的系统上没有该动态库时,应用程序就会运行失败。再看它们的特点: 
动态库: 
1.共享:多个应用程序可以使用同一个动态库,启动多个应用程序的时候,只需要将动态库加载到内存一次即可; 
2.开发模块好:要求设计者对功能划分的比较好。

3.动态库与静态库的使用

C#动态链接库的创建与使用
动态链接库(Dynamic Link Library)是实现共享代码段的一种方式,动态链接库文件为不可执行的二进制文件,是经过预先编译处理的,当程序需要时调用所需的dll文件,使用动态链接库的好处是不会占用调用dll文件程序的内存.
本文将使用 Visual Studio 2017 编译器。
如何生成dll文件
1.打开Visual Studio 2017,使用快捷键CTRL+SHIFT+N新建项目
在Visual C#中选择类库(.NET Framework)新建一个名为dllexample的项目

2.创建完成后向其中添加代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace dllexample
{public class Class1{public void Show(){Console.WriteLine("Congratulation! You have already loaded Dynamic Link Library!");}}
}

3.生成dllexample.dll文件

如何使用dll文件

1.在Visual Studio 2017下使用快捷键CTRL+SHITF+N新建项目

在Visual C#下选择控制台应用(.NET Framework)新建一个名为dlltest的项目.

在最上面一栏的项目中选择添加引用将dllexample.dll文件加载进去

向其中添加代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using dllexample;namespace dlltest
{class Program{static void Main(string[] args){dllexample.Class1 i = new Class1();i.Show();}}
}

编译并运行将会出现以下结果:

解决VS2017运行时控制台一闪即逝问题的方法

f5是开始调试的指令,ctrl+f5才是开始执行(不调试),如果在换成ctrl+f5执行后可以正常显示输出内容和“Press any key to continue...“这句话,那么问题就解决了。

【专题】C#调用动态链接库DLL相关推荐

  1. Unity调用动态链接库dll和so

    [001]Unity调用动态链接库dll和so  ApolloAR https://www.jianshu.com/p/f37bb72979a1 一.PC平台 (注:环境 VS2017+Unity20 ...

  2. VC++6.0如何创建与调用动态链接库(dll)

    VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库.MFC规则DLL和MFC扩展DLL.DLL导出函数(或变量.类)可供应用程 ...

  3. Matlab调用动态链接库DLL文件

    环境:vs2015.Matlab2020 VS2015中建立工程, 建立工程如下两图所示 在头文件和源文件中分别添加头文件和源文件(代码如下所示) 头文件matdll.h文件 #pragma once ...

  4. Qt生成调用动态链接库dll

    把编译好的包含函数和变量的目标代码存储到文件中,在链接的时候让链接程序自动从文件中查找需要的代码.这个文件就是链接库,又可以分为静态链接库和动态链接库. 1. 静态链接库 链接程序从库中寻找需要的符号 ...

  5. Windows 下 JNI 调用动态链接库 dll

    1. Java调用本地代码常见的两种方案 JNI JNI(Java Native Interface),有过不同语言间通信开发经历的一般都知道,它允许java和其他语言代码(尤其是C/C++)进行交互 ...

  6. 使用Matlab调用动态链接库dll

    1.下载.安装和配置环境变量MinGW-w64 C/C++ 1.1 下载网址 http://tdm-gcc.tdragon.net/download 1.2 默认地址安装 1.3 配置环境变量 新建系 ...

  7. Python调用动态链接库DLL文件

    目录 方法一.ctypes库方式 方法二.shell方式 方法一.ctypes库方式 使用ctypes库调用.这个方法网上一搜都是. import ctypes obj = ctypes.WinDLL ...

  8. 制作和unity调用动态链接库dll文件

    首先用vc建立一个dll工程 然后在里面建立一个testunity.h文件.内容如下 1 extern "C" int _declspec(dllexport)testunity( ...

  9. MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用

    静态链接库LIB和动态链接库DLL的区别,创建和示例   1.什么是静态连接库,什么是动态链接库   静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都 ...

最新文章

  1. 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
  2. VTK与Qt整合的示例
  3. 方舟服务器显示队友位置,方舟如何看队友在哪 | 手游网游页游攻略大全
  4. matlab内将数组内所有数累乘,数学实验上机汇总【未完成】
  5. 配置K8S web ui控制台
  6. 20170822L08-04老男孩linux实战运维培训-Lamp系列之-Apache服务生产实战应用指南01
  7. java unsigined short_LDD之数据类型
  8. Tomcat7实现Servlet3异步请求
  9. Win10 Edge浏览器续航碾压火狐/Chrome
  10. 代数学笔记5: 群论(一)
  11. 数据分析与机器学习之线性回归与逻辑回归(六)
  12. 服务器提取数据库信息,怎样从服务器数据库提取数据库
  13. 安卓TextView的常用属性
  14. ollydbg使用心得
  15. Nginx架构四之七层负载均衡
  16. 修改服务器bi,修改 FineBI 配置参数
  17. 输出文本(pre\code\kbd\var...)
  18. EVE-NG Lab通过Cloud连接外网
  19. Shiro登录的使用以及原理(一)
  20. Xcode Instruments之概述

热门文章

  1. 招聘一周×上海 | 美团、PayPal、腾讯、小红书等 8 家公司最新内推岗位
  2. go语言学习之二维数组
  3. 北大资源重磅来宜--宜昌未来商业中心将诞生
  4. 叠字母(python版)
  5. html2canvas是否截图成功状态值,前端使用html2canvas截图,在canvas上绘制图片及保存图片...
  6. extern用法总结
  7. 渗透测试基础入门-概念名词
  8. 如何成为一名漏洞赏金猎人
  9. 系统分析师备考经验分享:分阶段、分重点
  10. 如何在三年备足10万创业金?