【专题】C#调用动态链接库DLL
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相关推荐
- Unity调用动态链接库dll和so
[001]Unity调用动态链接库dll和so ApolloAR https://www.jianshu.com/p/f37bb72979a1 一.PC平台 (注:环境 VS2017+Unity20 ...
- VC++6.0如何创建与调用动态链接库(dll)
VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库.MFC规则DLL和MFC扩展DLL.DLL导出函数(或变量.类)可供应用程 ...
- Matlab调用动态链接库DLL文件
环境:vs2015.Matlab2020 VS2015中建立工程, 建立工程如下两图所示 在头文件和源文件中分别添加头文件和源文件(代码如下所示) 头文件matdll.h文件 #pragma once ...
- Qt生成调用动态链接库dll
把编译好的包含函数和变量的目标代码存储到文件中,在链接的时候让链接程序自动从文件中查找需要的代码.这个文件就是链接库,又可以分为静态链接库和动态链接库. 1. 静态链接库 链接程序从库中寻找需要的符号 ...
- Windows 下 JNI 调用动态链接库 dll
1. Java调用本地代码常见的两种方案 JNI JNI(Java Native Interface),有过不同语言间通信开发经历的一般都知道,它允许java和其他语言代码(尤其是C/C++)进行交互 ...
- 使用Matlab调用动态链接库dll
1.下载.安装和配置环境变量MinGW-w64 C/C++ 1.1 下载网址 http://tdm-gcc.tdragon.net/download 1.2 默认地址安装 1.3 配置环境变量 新建系 ...
- Python调用动态链接库DLL文件
目录 方法一.ctypes库方式 方法二.shell方式 方法一.ctypes库方式 使用ctypes库调用.这个方法网上一搜都是. import ctypes obj = ctypes.WinDLL ...
- 制作和unity调用动态链接库dll文件
首先用vc建立一个dll工程 然后在里面建立一个testunity.h文件.内容如下 1 extern "C" int _declspec(dllexport)testunity( ...
- MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用
静态链接库LIB和动态链接库DLL的区别,创建和示例 1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都 ...
最新文章
- 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
- VTK与Qt整合的示例
- 方舟服务器显示队友位置,方舟如何看队友在哪 | 手游网游页游攻略大全
- matlab内将数组内所有数累乘,数学实验上机汇总【未完成】
- 配置K8S web ui控制台
- 20170822L08-04老男孩linux实战运维培训-Lamp系列之-Apache服务生产实战应用指南01
- java unsigined short_LDD之数据类型
- Tomcat7实现Servlet3异步请求
- Win10 Edge浏览器续航碾压火狐/Chrome
- 代数学笔记5: 群论(一)
- 数据分析与机器学习之线性回归与逻辑回归(六)
- 服务器提取数据库信息,怎样从服务器数据库提取数据库
- 安卓TextView的常用属性
- ollydbg使用心得
- Nginx架构四之七层负载均衡
- 修改服务器bi,修改 FineBI 配置参数
- 输出文本(pre\code\kbd\var...)
- EVE-NG Lab通过Cloud连接外网
- Shiro登录的使用以及原理(一)
- Xcode Instruments之概述