dll是什么软件编写的 c 调用c 编写的dll - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

dll是什么软件编写的 c 调用c 编写的dll

时间:2020-06-29 09:00:17
dll是什么软件编写?* dll 一般用 VC,Delphi C 等开发工具编写至于要求就是 * dll 是给自已或别人调用的如果你要考虑广泛的兼容 比如 你用VC 写的,可以给 VC,Delphi
作者:

dll是什么软件编写的

dll是什么软件编写?

*.dll 一般用 VC,Delphi C# 等开发工具编写至于要求就是 *.dll 是给自已或别人调用的如果你要考虑广泛的兼容 比如 你用VC 写的,可以给 VC,Delphi,PB,VB,C# 等语言调用你的 dll 输出函数传参方式就得按固定方式,一般采用Win32API 类似的 cdel 传参方式*.dll 有时不仅仅是一些函数库,有些 *.dll 是一个COM或DCOM组件,支持 regsvr32 xxx.dll 来注册,这就要求 .dll 中对应的 注册与反注册函数,也就是遵循某个框架。

还有 *.dll 不一定就是放些函数执行代码,*.dll中也可以放数据,如图片或资源(还是图片或文字)什么的。

参考一些支持多国语言的程序,换一个dll 就显示的不同国家文字,就是通过不同的资源 .dll 来实现的。

最后,*.dll 不一定是 .dll 这个怎么说呢,就是你的程序中用到的 一些数据文件或配置文件或记录文件你也可以命名为 xxx.dll 这样多数据情况普通用户就不会乱改你的配置/记录文件了。

因为相对于 *.ini 文件 .dll 一般用户不是“随意”能用记事本打开来改的。

当然不建议这么做。

...

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"是什么意思?

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 5.0以上版本也可以编写一种特殊的DLL,即ActiveX DLL。

DLL不是独立运行的程序,它是某个程序的一个部分,它只能由所属的程序调用。

用户不能,也不需要打开它。

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的64位版

从菜单【编译(Build)】->【配置管理(Configuration&nbsp。

solution Manager)】 在弹出的窗口里的右上角有个【可用工程平台(Active platform)】下拉框,打开可以看到有个【新建】菜单,点击打开【新建工程平台】的对话框在编译配置里添加一个x64的就可以了...

后缀是dll 或sys 或dat或ocx的文件分别是什么文件或程序?用什么软件...

比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。

可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。

在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的 EXE 程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。

Windows 系统平台上提供了一种完全不同的较有效的编程和运行环境,你可以将独立的程序模块创建为较小的 DLL (Dynamic Linkable Library) 文件,并可对它们单独编译和测试。

在运行时,只有当 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)。

Windows将遵循下面的搜索顺序来定位 DLL: 包含EXE文...

请问,*.dll用什么程序打开?

绿色软件与编程语言无关,绿色软件的定义和分类 安装完操作系统后,我们一般需要安装一些常用的软件,但是随着我们常用软件的增多,这个安装过程显得越来越令人厌烦:运行setup,然后是选择目标路径,不断的重复这个过程。

后来我见到有人制作所谓的绿色软件,不需要安装,感觉很方便。

当时很好奇,想知 道怎么做的,有没有什么方便的工具等等,可是在网上没有找到什么相关的知识,随着自己的一步步摸索,我逐渐积累了一些经验和比较有效的方法,在这里提供给大家。

首先要先弄清楚何谓绿色软件?其定义是什么?我收集了一些网友的讨论和想法: A 说,不需要安装 同时 不向注册表写入任何东西 B 说,应该还包括不向系统文件夹拷贝文件,我的理解就是:安装这个软件对现有的操作系统没有任何改变,改变包括写注册表之类的。

C 说,除了你现在安装的目录,应该不往任何地方写东西(比如log)。

D 说,免安装,并且 不往程序所在目录以外的任何地方产生垃圾文件,还有 不写注册表 E 说,综上加一条,可以放在移动存储器上在任一电脑上使用且效果相同。

F 说,好像不写注册表,直接copy来就可以用得就算吧。

G 说,重新安装系统的时候,仅需导入注册表,不需重新安装,就可以认为是绿色软件。

H 说,其实只要不写注册表、不往系统文件夹写文件,哪怕需要.ini文件也在软件自己的目录里就行,那么就可算作绿色软件,特征是能够任意copy到别的文件夹照样能用或重装系统后直接能用,没有其它变化。

所以有小部分“安装”的软件其实也符合绿色软件,因 为它 的安装只是解压缩建立文件夹而已。

I 说,基本同意,但不写注册表的几乎是不可能,你只要运行过那个软件,打开注册表编辑器HKLM和HKLU下面software看看,几乎都会留下键值,其实这样也应该叫做绿色的吧。

综合上面的意见,可以总结出绿色软件的优点,就是对操作系统无污染(恐怕这也是绿色这个名字的由来),不需要安装,方便卸载,便于携带,可以拷贝到便携的U盘上到处运行。

有什么软件可以编译dll后缀的 动态链接库文件 ???

DLL,即动态链接库。

要从程序编码说起。

开发软件的人(程序员)在编码的时候,为什么不把整个软件编译成一个exe文件呢?原因在于,他所编写的代码中有很多有重用的价值,即可以在他编写的另外一个程序中再次被利用。

为了把这部分代码独立出来,就要把它单独编译为一个文件,这就是DLL。

DLL文件不能被直接打开,但是可以用eXeScope等提取其中的资源,或者反编译为汇编。

大家还关注
    
阅读排行
推荐阅读