AXZ博客
给你海洋的知识 AXZLK.COM!

怎么用电脑关闭易语言程序运行(c语言打开关闭一个程序)

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,会减少该DLL的Windows应用记录) 1,直到所有相关程序执行完毕,使用时释放DLL,简单实用,但不够灵活,不能满足一般要求。

隐式调用:需要将生成动态链接库时生成的.LIB文件添加到应用程序的工程中。 当你要使用DLL中的函数时,只需要解释一下即可。 隐式调用不需要调用 LoadLibrary() 和 FreeLibrary()。 当程序员创建一个 DLL 文件时,链接器会自动生成一个相应的 LIB 导入文件。 此文件包含每个 DLL 导出函数的符号名称和可选标识号,但不包含实际代码。 LIB 文件被编译到应用程序项目中作为 DLL 的替代品。

当程序员通过静态链接编译生成应用程序时,应用程序中的调用函数匹配LIB文件中导出的符号,这些符号或标识号进入生成的EXE文件。 LIB 文件还包含相应的 DLL 文件名(但不是完整路径名),链接器将其存储在 EXE 文件中。

当应用程序运行过程中需要加载DLL文件时,Windows根据这些信息发现并加载DLL,然后通过符号名或标识号实现对DLL函数的动态链接。 应用程序调用的所有DLL文件都会在加载应用程序EXE文件时加载到内存中。 可执行程序链接到导入库文件(.LIB 文件),该文件包含有关 DLL 导出的函数的信息。 操作系统在加载可执行程序时加载 DLL。 可执行程序通过函数名直接调用DLL的输出函数,调用方法与程序中其他函数相同。

2、动态调用方式:程序员通过API函数加载和卸载DLL,达到调用DLL的目的。 它使用起来比较复杂,但是可以更有效地使用内存。 它是编译大型应用程序时的重要方法。

显式调用:

是指使用MFC提供的LoadLibrary或AfxLoadLibrary在应用程序中显式调用自己制作的动态链接库。 动态链接库的文件名就是上面两个函数的参数,然后用GetProcAddress()得到需要导入的函数。 从那时起,您就可以像调用此应用程序的自定义函数一样调用此导入函数。 应用程序退出前,应使用MFC提供的FreeLibrary或AfxFreeLibrary释放动态链接库。 直接调用Win32的LoadLibary函数,将DLL的路径指定为参数。 LoadLibary 返回应用程序在调用 GetProcAddress 函数时使用的 HINSTANCE 参数。 GetProcAddress 函数将符号名称或标识号转换为 DLL 中的地址。 程序员可以决定何时加载或不加载 DLL 文件,显式链接决定在运行时加载哪个 DLL 文件。 使用DLL的程序在使用前必须加载(LoadLibrary)加载DLL获得DLL模块句柄,然后调用GetProcAddress函数获得输出函数指针怎么用电脑关闭易语言程序运行,退出前必须卸载DLL(FreeLibrary) .

正因为DLL具有占用内存小、编辑方便的特点,所以很多计算机病毒都是DLL格式的文件。 但是不能一个人跑。

动态链接库通常不能直接运行,也不能接收消息。 它们是独立的文件,其中包含可由可执行文件或其他 DLL 调用以执行某些操作的函数。 它只有在其他模块调用动态链接库中的函数时才起作用。

赞(0)
未经允许不得转载:AXZ博客 » 怎么用电脑关闭易语言程序运行(c语言打开关闭一个程序)
分享到

评论 抢沙发

登录

找回密码

注册