动态链接库

摘要:
它包含可由可执行程序或其他DLL调用以完成任务的函数。只有当其他模块调用动态链接库中的函数时,User32.dll才包含用于执行用户界面任务(如窗口创建和消息传输)的函数,而GDI32.dll则包含用于绘制和显示文本的函数。1.静态库和动态库静态库函数和数据被编译成二进制文件(通常具有.LIB扩展名)。

  动态链接库(DLL),其是windows操作系统的基础,其通常不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某项工作的函数。只有在其他模块调用动态链接库中的函数时,它才发挥作用。

  Windows API中所有的函数都包含在DLL中,其中有3个重要的DLL。

  • Kernel32.dll 它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数;
  • User32.dll 它包含那些用于执行用户界面任务(如窗口的创建和消息的传递)的函数,例如CreateWindow函数;
  • GDI32.dll 它包含那些用于画图和显示文本的函数

1.静态库和动态库

  • 静态库

  函数和数据被编译进一个二进制文件(通常扩展名为.LIB,即是静态库),在使用静态库的情况下,在编译链接可执行文件时,链接器将从库中复制这个二进制文件并和程序中其他其他模块最终组合成可执行文件(.EXE文件),当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库。

  • 动态库

  在使用动态链接库,往往提供两个文件:一个引入库(.lib)文件和一个DLL文件(.dll)。虽然引入库文件的后缀名也是“lib”,但是动态链接库文件和静态库文件有着本质的区别,对于DLL文件来说,其引入库文件(.lib)包含DLL导出的函数和变量的符号名,而.dll文件包含实际的函数和数据。在使用动态链接库,编译链接可执行文件时,只需要链接该DLL的引入库文件,该DLL中的函数代码和数据并不复制到可执行文件中直到可执行程序运行时,才去加载所需要的DLL,将该DLL映射到进程的地址空间中,然后访问DLL中导出的函数。这时,发布产品时,除了发布可执行文件以外,同时还要发布该程序将要调用的动态链接库。

2.使用动态链接库的好处

  • 可以采用多种语言来编写dll。即如用某种语言编写DLL,而用其他语言所编写的可执行程序来调用这些DLL
  • 增强产品的功能。、
  • 提供二次开发的平台
  • 简化项目管理 
  • 可以节省磁盘空间和内存
  • 有助于资源的共享
  • 有助于实现应用程序的本地化

PS:参考VC++深入详解

免责声明:文章转载自《动态链接库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP post接口返回数据nopCommerce 4.2 小程序商城(基础版)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux环境下搭建go开发环境

一、环境介绍 Linux环境:阿里云,Linux镜像是centos8.2 64位 本机电脑:是win10操作系统 二、Linux下golang环境搭建 首先通过Xshell6连接上阿里云Linux操作系统    下载go语言开发环境,地址是https://golang.google.cn/dl/,可以根据自己的情况选择相应的版本,我选择的是go1.15....

【摘】eclipse 中如何安装插件

 ^_^ ^_^火来惭愧,用eclipse快两年了都不曾知道如何安装插件(以前都是使用的MyEclipse,它自动继承了web相关的插件)。前天晚上阅读了《卓有成效的程序员》,书中提到了使用快捷键的意义,其实之前自己也意识到了快捷键的价值但只会常用的几个,此书中提到了promtper key插件,于是上网下载了一个,结果尴尬的是不会使用, 因此学习了一下插...

linux下svn命令的使用

1、将文件checkout到本地目录   svn checkout path(path是服务器上的目录)    例如:svn checkout svn://192.168.1.1/pro/domain     简写:svn co 2、往版本库中添加新的文件     svn addfile    例如:svn add test.php(添加test.php)...

wxWidgets刚開始学习的人导引(2)——下载、安装wxWidgets

wxWidgets刚開始学习的人导引全目录   PDF版及附件下载 1 前言2 下载、安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith进行可视化设计附:学习材料清单 2 下载、安装wxWidgets   这方面的资料从网络能够找到不少。wxWidgets的文档,要涵盖各种操...

DGL学习(三): 消息传递教程

在本节中,我们将不同级别的消息传递API与PageRank一起使用。 在DGL中,消息传递和功能转换是用户定义的函数(UDF)。 PageRank 算法: 在PageRank的每次迭代中,每个节点(网页)首先将其PageRank值均匀地分散到其下游节点。 每个节点的新PageRank值是通过汇总从其邻居收到的PageRank值来计算的,然后通过阻尼因子(d...

ansible-乱

工作机制:ssh 无客户端 工作方式: 1,CMDB 2,公有云私有云API 3,使用ad-hoc 4,ansible-playbook ansible 执行命令,底层调用传输连接模块,将命令或文件传输至远程服务器的/tmp目录,远程执行,操作完后删除,返回结果。 配置文件 /etc/ansible 功能;inventory 主机信息配置 工具功能 /us...