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...“这句话,那么问题就解决了。