回答 (2)关注 (0)查看 (2593)
DLL文件到底是如何工作的?
写回答邀请回答
提问于

2 个回答

什么是DLL?
动态链接库(DLL)就像EXE,但它们不能直接执行。它们与Linux / Unix中的.so文件类似。也就是说,DLL是MS的共享库的实现。
DLL非常像EXE,文件格式本身是相同的。EXE和DLL都基于可移植可执行文件(PE)文件格式。DLL也可以包含COM组件和.NET库。
什么是DLL包含?
DLL包含EXE或其他DLL使用的函数,类,变量,UI和资源(如图标,图像,文件等)。
图书馆的类型:
在几乎所有的操作系统上,都有两种类型的库。静态库和动态库。在Windows中,文件扩展名如下所示:静态库(.lib)和动态库(.dll)。主要区别在于静态库在编译时链接到可执行文件; 而动态链接库在运行时才会被链接。
更多关于静态和动态库:
您通常不会在计算机上看到静态库,因为静态库直接嵌入到模块(EXE或DLL)中。动态库是一个独立的文件。
一个DLL可以在任何时候被改变,并且只在EXE显式地加载DLL时在运行时加载。静态库在EXE中编译后无法更改。一个DLL可以单独更新而无需更新EXE本身。
加载DLL:
程序在启动时通过Win32 API LoadLibrary加载DLL,或者当它是另一个DLL的依赖项时。程序使用GetProcAddress加载函数或LoadResource来加载资源。
进一步阅读:
什么是DLL? 动态链接库(DLL)就像EXE,但它们不能直接执行。它们与Linux / Unix中的.so文件类似。也就是说,DLL是MS的共享库的实现。 DLL非常像EXE,文件格式本身是相同的。EXE和DLL都基于可移植可执行文件(PE)文件格式。DLL也可以包含CO...
用户回答回答于
什么是DLL?
DLL文件是可以包含可执行代码和资源(如图像等)的二进制文件。与应用程序不同,应用程序不能直接执行,但应用程序会在需要时加载它们(或者在启动过程中一次加载)。
它们很重要吗?
大多数应用程序会在启动时加载它们需要的DLL文件。如果找不到任何这些信息,系统将根本无法启动该过程。
DLL文件可能需要其他DLL文件
以与应用程序需要DLL文件相同的方式,DLL文件可能依赖于其他DLL文件本身。如果没有找到依赖关系链中的这些DLL文件之一,则应用程序将无法加载。这可以使用任何依赖性walker工具轻松调试
系统文件夹中有太多它们
大多数系统功能以DLL文件的形式暴露给用户程序,因为它们是共享代码/资源的标准形式。每个功能都分开保存在不同的DLL文件中,以便只加载所需的DLL文件,从而减少系统上的内存限制。
安装的应用程序也使用DLL文件
如上所述,DLL文件也成为物理分离功能的一种形式。良好的应用程序也会尝试不加载DLL文件,直到它们被绝对需要,这减少了内存需求。这也导致应用程序出现大量的DLL文件。
DLL地狱
但是,有时系统升级经常会在共享DLL文件与需要它们的程序之间存在版本不匹配的情况下中断其他程序。系统检查点和DLL缓存等已经从M $开始解决这个问题。.NET平台可能根本不会面临这个问题。
我们如何知道DLL文件里面有什么?
你必须使用像DUMPBIN或Dependency Walker这样的外部工具,它不仅能够显示DLL文件中包含哪些公开可见的函数(称为导出),还需要哪些其他DLL文件以及从这些DLL文件导出此DLL文件依赖于。
我们如何创建/使用它们?
请参阅供应商提供的编程文档。对于C ++,请参阅MSDN中的LoadLibrary。
什么是DLL? DLL文件是可以包含可执行代码和资源(如图像等)的二进制文件。与应用程序不同,应用程序不能直接执行,但应用程序会在需要时加载它们(或者在启动过程中一次加载)。 它们很重要吗? 大多数应用程序会在启动时加载它们需要的DLL文件。如果找不到任何这些信息,系统将根本无...

所属标签

可能回答问题的人

施主-借个火
腾云先锋 · 腾云先锋(TDP)成员 (已认证)
21 粉丝17 提问11 回答
西门呀在吹雪
15 粉丝8 提问11 回答
幻影龙王
腾云先锋 · 腾云先锋(TDP)成员 (已认证)
33 粉丝8 提问9 回答
EatRice
26 粉丝0 提问7 回答