什么是DLL档案有何作用

什么是DLL档案有何作用,第1张

什么是DLL档案?有何作用?

DLL档案(Dynamic Linkable Library 即动态连结库档案),是一种不能单独执行的档案,它允许程式共享执行特殊任务所必需的程式码和其他资源

比较大的应用程式都由很多模组组成,这些模组分别完成相对独立的功能,它们彼此协作来完成整个软体系统的工作。可能存在一些模组的功能较为通用,在构造其它软体系统时仍会被使用。在构造软体系统时,如果将所有模组的原始码都静态编译到整个应用程式 EXE 档案中,会产生一些问题:一个缺点是增加了应用程式的大小,它会占用更多的磁碟空间,程式执行时也会消耗较大的记忆体空间,造成系统资源的浪费;另一个缺点是,在编写大的 EXE 程式时,在每次修改重建时都必须调整编译所有原始码,增加了编译过程的复杂性,也不利于阶段性的单元测试。

Windows 系统平台上提供了一种完全不同的较有效的程式设计和执行环境,你可以将独立的程式模组建立为较小的 DLL 档案,并可对它们单独编译和测试。在执行时,只有当 EXE 程式确实要呼叫这些 DLL 模组的情况下,系统才会将它们装载到记忆体空间中。这种方式不仅减少了 EXE 档案的大小和对记忆体空间的需求,而且使这些 DLL 模组可以同时被多个应用程式使用。Windows 自己就将一些主要的系统功能以 DLL 模组的形式实现。

一般来说,DLL 是一种磁碟档案,以dll、DRV、FON、SYS 和许多以 EXE 为副档名的系统档案都可以是 DLL。它由全域性资料、服务函式和资源组成,在执行时被系统载入到呼叫程序的虚拟空间中,成为呼叫程序的一部分。如果与其它 DLL 之间没有冲突,该档案通常对映到程序虚拟空间的同一地址上。DLL 模组中包含各种汇出函式,用于向外界提供服务。DLL 可以有自己的资料段,但没有自己的堆叠,使用与呼叫它的应用程式相同的堆叠模式;一个 DLL 在记忆体中只有一个例项;DLL 实现了程式码封装性;DLL 的编制与具体的程式语言及编译器无关。

在 Win32 环境中,每个程序都复制了自己的读/写全域性变数。如果想要与其它程序共享记忆体,必须使用记忆体对映档案或者宣告一个共享资料段。DLL 模组需要的堆叠记忆体都是从执行程序的堆叠中分配出来的。Windows 在载入 DLL 模组时将程序函式呼叫与 DLL 档案的汇出函式相匹配。Windows 作业系统对 DLL 的 *** 作仅仅是把 DLL 对映到需要它的程序的虚拟地址空间里去。DLL 函式中的程式码所建立的任何物件(包括变数)都归呼叫它的执行绪或程序所有。

呼叫方式:

1、静态呼叫方式:由编译系统完成对 DLL 的载入和应用程式结束时 DLL 解除安装的编码(如还有其它程式使用该 DLL,则 Windows 对 DLL 的应用记录减1,直到所有相关程式都结束对该 DLL 的使用时才释放它,简单实用,但不够灵活,只能满足一般要求。

隐式的呼叫:需要把产生动态连线库时产生的 LIB 档案加入到应用程式的工程中,想使用 DLL 中的函式时,只须说明一下。隐式呼叫不需要呼叫 LoadLibrary() 和 FreeLibrary()。程式设计师在建立一个 DLL 档案时,连结程式会自动生成一个与之对应的 LIB 汇入档案。该档案包含了每一个 DLL 汇出函式的符号名和可选的标识号,但是并不含有实际的程式码。LIB 档案作为 DLL 的替代档案被编译到应用程式专案中。

当程式设计师通过静态连结方式编译生成应用程式时,应用程式中的呼叫函式与 LIB 档案中汇出符号相匹配,这些符号或标识号进入到生成的 EXE 档案中。LIB 档案中也包含了对应的 DL L档名(但不是完全的路径名),连结程式将其储存在 EXE 档案内部。

当应用程式执行过程中需要载入 DLL 档案时,Windows 根据这些资讯发现并载入 DLL,然后通过符号名或标识号实现对 DLL 函式的动态连结。所有被应用程式呼叫的 DLL 档案都会在应用程式 EXE 档案载入时被载入在到记忆体中。可执行程式连结到一个包含 DLL 输出函式资讯的输入库档案(LIB档案)。作业系统在载入使用可执行程式时载入 DLL。可执行程式直接通过函式名呼叫 DLL 的输出函式,呼叫方法和程式内部其 它的函式是一样的。

2、动态呼叫方式:是由程式设计者用 API 函式载入和解除安装 DLL 来达到呼叫 DLL 的目的,使用上较复杂,但能更加有效地使用记忆体,是编制大型应用程式时的重要方式。

显式的呼叫:

是指在应用程式中用 LoadLibrary 或 MFC 提供的 AfxLoadLibrary 显式的将自己所做的动态连线库调进来,动态连线库的档名即是上面两个函式的引数,再用 GetProcAddress() 获取想要引入的函式。自此,你就可以象使用如同本应用程式自定义的函式一样来呼叫此引入函数了。在应用程式退出之前,应该用 FreeLibrary 或 MFC 提供的 AfxFreeLibrary 释放动态连线库。直接呼叫 Win32 的 LoadLibary 函式,并指定 DLL 的路径作为引数。LoadLibary 返回 HINSTANCE 引数,应用程式在呼叫 GetProcAddress 函式时使用这一引数。GetProcAddress 函式将符号名或标识号转换为 DLL 内部的地址。程式设计师可以决定 DLL 档案何时载入或不载入,显式连结在执行时决定载入哪个 DLL 档案。使用 DLL 的程式在使用之前必须载入(LoadLibrary)载入DLL从而得到一个DLL模组的控制代码,然后呼叫 GetProcAddress 函式得到输出函式的指标,在退出之前必须解除安装DLL(FreeLibrary)。

正因为DLL 有占用记忆体小,好编辑等的特点有很多电脑病毒都是DLL格式档案。但不能单独执行。

动态连结库通常都不能直接执行,也不能接收讯息。它们是一些独立的档案,其中包含能被可执行程式或其它DLL呼叫来完成某项工作的函式。只有在其它模组呼叫动态连结库中的函式时,它才发挥作用。

打得累死了,大哥你多给积分吧

ws2_32dll档案有何作用

ws2_32dll是Windows Sockets应用程式介面, 用于支援Inter和网路应用程式。程式执行时会自动呼叫ws2_32dll档案,ws2_32dll是个动态连结库档案位于系统资料夹中。Windows在查询动态连结库档案时会先在应用程式当前目录搜寻,如果没有找到然后才会搜寻Windows所在目录;如果还是没有会搜寻system32和system目录。

什么是JC档案 ,有何作用

那是用"网际快车(以前叫Jetcar,现在叫Flashget)下载的档案没有下载完毕而形成的档案,就会成为字尾名为jc的档案

作用:

就跟晚自习时到图书馆占座位差不多,根据下载档案的大小,在硬碟上占一个空间。下载完整无缺后,自动就会将JC去掉。

什么是LOG档案,有何作用?

是日志档案,

你可以开始里,执行,输入cmd

在cmd里打命令 del c:\windons\log

del c:\windows\txt

这些都是日志

什么是ini档案,有何作用?

ini 档案是Initialization File的缩写,即初始化档案,是windows的系统配置档案所采用的储存格式,统管windows的各项配置,一般使用者就用windows提供的各项图形化管理介面就可实现相同的配置了。但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows才能去直接编辑。开始时用于WIN3X下面,WIN95用登录档代替,以及后面的内容表示一个节,相当于登录档中的键。

ini , inc之类的档案,一般是放一些常量或资料库连结语句等,再在需要的页面包含进去,和直接命为 asp 是没什么区别的。

dll是什么档案?如何建立的?有何作用?

DLL档案即动态连结库档案,是一种可执行档案,它允许程式共享执行特殊任务所必需的程式码和其他资源。Windows提供的DLL档案中包含了允许基于Windows的程式在Windows环境下 *** 作的许多函式和资源。

DLL多数情况下是带有DLL副档名的档案,但也可能是EXE或其他副档名。它们向运行于Windows作业系统下的程式提供程式码、资料或函式。程式可根据DLL档案中的指令开启、启用、查询、禁用和关闭驱动程式。

DLL的全称是Dynamic Link Library, 中文叫做“动态连结档案”。在Windows作业系统中, DLL对于程式执行是非常重要的, 因为程式在执行的时候, 必须连结到DLL档案, 才能够正确地执行。而有些DLL档案可以被许多程式共用。因此, 程式设计人员可以利用DLL档案, 使程式不至于太过巨大。但是当安装的程式越来越多, DLL档案也就会越来越多, 如果当你删除程式的时候, 没有用的DLL档案没有被删除的话, 久而久之就造成系统的负担了。

DLL是动态连线库。使用动态连线库的一些好处是:

1多个应用程式共享程式码和资料:比如Office软体的各个组成部分有相似的外观和功能,这就是通过共享动态连线库实现的。

2在钩子程式过滤系统讯息时必须使用动态连线库。

3动态连线库以一种自然的方式将一个大的应用程式划分为几个小的模组,有利于小组内部成员的分工与合作。而且,各个模组可以独立升级。如果小组中的一个成员开发了一组实用例程,他就可以把这些例程放在一个动态连线库中,让小组的其他成员使用。

4为了实现应用程式的国际化,往往需要使用动态连线库。使用动态连线库可以将针对某一国家、语言的资讯存放在其中。对于不同的版本,使用不同的动态连线库。在使用AppWizard生成应用程式时,我们可以指定资原始档使用的语言,这就是通过提供不同的动态连线库实现的。

VC++、C++ Builder、Delphi都可以编写DLL档案。Visual Basic 50以上版本也可以编写一种特殊的DLL,即ActiveX DLL。

DLL不是独立执行的程式,它是某个程式的一个部分,它只能由所属的程式呼叫。使用者不能,也不需要开启它。

NPPToolsdll是什么档案?有何作用?win7支援吗?

npptoolsdll --- NPP 工具助手 DLL右点它可以设定使用者许可权,就可以禁止修改NPP,换个说法就是防ARP欺骗。 之前用P2P控制的时候下载过 win7支援

dll是什么档案 dll档案的作用

dll档案有什么用呢?作为电脑爱好者的我们都有必要了解,这也可以为后期遇到的相关电脑问题解决提供一定的基础知识,因为有不少电脑问题都可能会涉及到dll档案程式,比如常见的电脑不能玩某游戏,提示找不到xxdll或xxdll缺失等。下面我们来详细介绍下dll是什么档案。

概括的说,DLL是Dynamic Link Library的缩写,意为动态连结库。DLL档案一般被存放在C:WindowsSystem目录下。DLL是一个包含可由多个程式同时使用的程式码和资料的库。因为在在Windows系统中,许多应用程式并不是一个完整的可执行档案,它们被分割成一些相对独立的动态连结库,即DLL档案,放置于系统中。当我们执行某一个程式时,相应的DLL档案就会被呼叫。一个应用程式可有多个DLL档案,一个DLL档案也可能被几个应用程式所共用,这样的DLL档案被称为共享DLL档案。例如,在 Windows 作业系统中,Comdlg32 DLL 执行与对话方块有关的常见函式。因此,每个程式都可以使用该 DLL 中包含的功能来实现开启对话方块。这有助于促进程式码重用和记忆体的有效使用。

√dll档案的作用

由于可以通过使用 DLL,程式可以实现模组化,由相对独立的元件组成。例如,一个计帐程式可以按模组来销售。可以在执行时将各个模组载入到主程式中(如果安装了相应模组)。因为模组是彼此独立的,所以程式的载入速度更快,而且模组只在相应的功能被请求时才载入。 此外,可以更为容易地将更新应用于各个模组,而不会影响该程式的其他部分。例如,您可能具有一个工资计算程式,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程式就可以应用更新。所以dll档案在程式中的最大作用是加速程式执行。

目前多数软体档案都设计都含有dll档案,主要是因为使用dll程式的软体有以下几个优点:

一:使用较少的资源

当多个程式使用同一个函式库时,DLL 可以减少在磁碟和实体记忆体中载入的程式码的重复量。这不仅可以大大影响在前台执行的程式,而且可以大大影响其他在 Windows 作业系统上执行的程式。 ·

推广模组式体系结构

二:DLL 有助于促进模组式程式的开发

这可以帮助您开发要求提供多个语言版本的大型程式或要求具有模组式体系结构的程式。模组式程式的一个示例是具有多个可以在执行时动态载入的模组的计帐程式。

winsock是什么档案?有何作用?

winsock是Windows平台下的网路套接字(Socket)介面。使用WINSOCK,可以很方便的建立网路连线或者侦听,然后接收和传送资料。

使用winsock API,可以编写基于各种网路协议(如TCP、UDP、IP)的应用程式。实际上Windows下多数要访问网路的程式其底层都呼叫了winsock API。winsock2的winsock API的dll档案是ws2_32dll。

Favortes是个什么档案,有何作用

楼主 你漏打了一个 i FAVORITES中文是特别喜爱的意思!他是作为IE网面收藏夹用的,你比较喜欢的网站或用得多的会存在里面!

使用csc命令将cs文件编译成dll的过程很多时候,我们需要将cs文件单独编译成dll文件, *** 作如下:打开命令窗口->输入cmd到控制台->cd C:\WINDOWS\MicrosoftNET\Framework\v114322转到vsnet安装的该目录下->执行csc命令csc /target:library Filecs->在该目录下产生一个对应名字的dll文件(前提:把cs文件放到C:\WINDOWS\MicrosoftNET\Framework\v114322目录下)csc命令的方式很多,请参考以下译Filecs 以产生 Fileexecsc Filecs 编译 Filecs 以产生 Filedllcsc /target:library Filecs 编译 Filecs 并创建 Myexecsc /out:Myexe Filecs 通过使用优化和定义 DEBUG 符号,编译当前目录中所有的 C# 文件。输出为 File2execsc /define:DEBUG /optimize /out:File2exe cs 编译当前目录中所有的 C# 文件,以产生 File2dll 的调试版本。不显示任何徽标和警告csc /target:library /out:File2dll /warn:0 /nologo /debug cs 将当前目录中所有的 C# 文件编译为Somethingxyz(一个 DLL)csc /target:library /out:Somethingxyz cs 编译 Filecs 以产生 Filedllcsc /target:library Filecs这个就是我们使用最多的一个命令,其实可以简单的写成csc /t:library Filecs,另外的一个写法是 csc /out:mycodebehinddll /t:library mycodebehindcs,这个可以自己指定输出的文件名。csc /out:mycodebehinddll /t:library mycodebehindcs mycodebehind2cs,这个的作用是把两个cs文件装到一个dll文件里举例(摘于网络)一、 动态链接库 什么是动态链接库?DLL三个字母对于你来说一定很熟悉吧,它是Dynamic Link Library 的缩写形式,动态链接库(DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。 和大多数程序员一样,你一定很使用过DLL吧。也曾感受到它的带给你程序设计和编码上的好错吧今天我想和大家探讨一个主题:如何在C#创建和调用DLL(动态链接库), 其实在很大意义上而讲,DLL让我更灵活的组织编写我们的应用程序,作为软件设计者,可一个根据它来达到很高的代码重用效果。下面我来介绍一下在C#中如何创建和调用DLL。二、准备工作 我们需要对我们接下来要做的事情做个简单的介绍,在本文我们将利用C#语言创建一个名为 MyDLLDLL的动态链接库,在这个动态链接库文件中我们将提供两个功能一个是对两个参数交换他们的值,另一个功能是求两个参数的最大公约数。然后创建一个应用程序使用这个DLL。运行并输出结果。三、创建DLL让我们创建以下三个C#代码文件:1、 MySwapcsview plaincopy to clipboardprint//该语句不要加入到程序中using System; namespace MyMethods { public class SwapClass { public static bool Swap(ref long i,ref long j) { i = i+j; j = i-j; i = i-j; return true; } } }2、MyMaxCDcsview plaincopy to clipboardprint//该语句不要加入到程序中using System; namespace MyMethods { public class MaxCDClass { public static long MaxCD(long i, long j) { long a,b,temp; if(i>j) { a = i; b = j; } else { b = i; a = j; } temp = a % b; while(temp!=0) { a = b; b = temp; temp = a % b; } return b; } } } 需要注意的是:我们在制作这两个文件的时候可以用Visual StudioNET或者其他的文本编辑器,就算是记事本也可以。这两个文件虽然不在同一个文件里面,但是他们是属于同一个namespace(名称空间)这对以后我们使用这两个方法提供了方便。当然他们也可以属于不同的名称空间,这是完全可以的,但只是在我们应用他们的时候就需要引用两个不同的名称空间,所以作者建议还是写在一个名称空间下面比较好。 接下来的任务是把这两个cs文件变成我们需要的DLL文件。方法是这样的:在安装了MicrosoftNET Framework的 *** 作系统上,我们可以在Windows所在目录下找到MicrosoftNET目录。在这个目录下面提供了C#的编译器,CSCEXE运行:csc /target:library /out:MyDLLDLL MySwapcs MyMaxCDcs,完成后可在本目录下面找到我们刚才生成的MyDLLDLL文件/target:library 编译器选项通知编译器输出 DLL 文件而不是 EXE 文件。后跟文件名的 /out 编译器选项用于指定 DLL 文件名。如果/out后面不跟文件名编译器使用第一个文件 (MySwapcs) 作为 DLL 文件名。生成的文件为MySwapDLL文件。 OK!我们创建动态链接库文件的任务完成了,现在是我们享受劳动成果的时候了,下面我将介绍如何使用我们所创建的动态链接库文件。 四、使用DLL 我们简单写一个小程序来测试一下我们刚才写的两个方法是否正确,好吧,跟我来:MyClientcsview plaincopy to clipboardprint//该语句不要加入到程序中using System; using MyMethods; //这里我们引用刚才定义的名称空间,如果刚才的两个文件我们写在两个不同的名称空间 class MyClient { public static void Main(string[] args) { if (argsLength != 2) { ConsoleWriteLine("Usage: MyClient <num1> <num2>"); return; } long num1 = longParse(args[0]); long num2 = longParse(args[1]); SwapClassSwap(ref num1,ref num2); // 请注意,文件开头的 using 指令使您得以在编译时使用未限定的类名来引用 DLL 方法 ConsoleWriteLine("The result of swap is num1 = {0} and num2 ={1}",num1, num2); long maxcd = MaxCDClassMaxCD(num1,num2); ConsoleWriteLine("The MaxCD of {0} and {1} is {2}",num1, num2, maxcd); } }若要生成可执行文件 MyClientexe,请使用以下命令行:csc /out:MyClientexe /reference:MyLibraryDLL MyClientcs/out 编译器选项通知编译器输出 EXE 文件并且指定输出文件名 (MyClientexe)。/reference 编译器选项指定该程序所引用的 DLL 文件。五、执行若要运行程序,请输入 EXE 文件的名称,文件名的后面跟两个数字,例如:MyClient 123 456六、输出The result of swap is num1 = 456 and num2 = 123The MaxCD of 456 and 123 is 3七、小结动态链接具有下列优点: 1、节省内存和减少交换 *** 作。很多进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。 2、节省磁盘空间。许多应用程序可在磁盘上共享 DLL 的一个副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。 3、升级到 DLL 更为容易。DLL 中的函数更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。 4、提供售后支持。例如,可修改显示器驱动程序 DLL 以支持当初交付应用程序时不可用的显示器。 5、支持多语言程序。只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的 DLL 函数。程序与 DLL 函数在下列方面必须是兼容的:函数期望其参数被推送到堆栈上的顺序,是函数还是应用程序负责清理堆栈,以及寄存器中是否传递了任何参数。 6、提供了扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC 应用程序使用。 7、使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。 使用DLL 的一个潜在缺点是应用程序不是独立的;它取决于是否存在单独的 DLL 模块。以上为转载

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

解析:

动态链接库 (DLL) 是包含函数和数据的模块的 。程序文件(如 exe 文件或 dll 文件)在运行时加载这些模块(亦即所需的模块映射到调用进程的地址空间)。下面两类函数定义了 DLL: • 导出函数:这些函数由其他模块调用。

• 内部函数:这些函数仅从定义它们的 DLL 中调用。

DLL 还导出数据。不过,这些数据由相应的函数使用

以上就是关于什么是DLL档案有何作用全部的内容,包括:什么是DLL档案有何作用、.net中怎样写dll文件、*.DLL是什么程序,有什么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9512716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存