动态链接库优点
动态链接库优点
节省资源
动态链接库包含多种程序所需资源,不同的程序可以共享使用同一个资源动态链接库。动态链接库不会和应用程序一起被加载到 RAM 中,当程序被加载时,系统会匹配所需 DLL 文件。
模块化结构
动态链接库可以帮助开发多语言版本的大型程序,编写其他语言的可执行程序实现对动态链接库的调用。使用动态链接库可以让程序实现模块化,根据不同功能进行分配,以动态链接库文件的方式实现同时开发,从而简化程序的开发和管理。
简单部署
动态链接库可以实现程序新功能的简单部署,只通过替换新的 DLL 即可完成新功能的部署。当动态链接库中的数据、函数需要更新和修复时,无需将动态链接库加载到程序中。另外,使用相同 DLL 的程序也会同步完成更新和修复。
节省资源
动态链接库包含多种程序所需资源,不同的程序可以共享使用同一个资源动态链接库。动态链接库不会和应用程序一起被加载到 RAM 中,当程序被加载时,系统会匹配所需DLL文件。
模块化结构
动态链接库可以帮助开发多语言版本的大型程序,编写其他语言的可执行程序实现对动态链接库的调用。使用动态链接库可以让程序实现模块化,根据不同功能进行分配,以动态链接库文件的方式实现同时开发,从而简化程序的开发和管理。
简单部署
动态链接库可以实现程序新功能的简单部署,只通过替换新的 DLL 即可完成新功能的部署。当动态链接库中的数据、函数需要更新和修复时,无需将动态链接库加载到程序中。另外,使用相同 DLL 的程序也会同步完成更新和修复。
动态链接库背景
动态链接库背景
动态链接库最初是为了解决应用程序内存问题。动态链接库提供了模块化的作用,允许通过更改共享的动态链接库中的代码和数据完成修改,无需修改程序本身。当多个应用程序使用同一个共享动态链接库时,有可能出现版本冲突,通过将不同版本的动态链接库放置在应用程序的文件夹中可解决这个问题。
动态链接库链接方式
动态链接库链接方式
动态链接库的链接方式分为隐式链接和显式链接两种。隐式链接是指 DLL 文件在程序执行时就进行内存加载,隐式链接需要将 DLL、Lib 以及头文件放入对应的搜索路径,然后将库的名字添加到依赖项中,就可以使用动态链接库中的函数了。显式链接是实时加载,只在需要的时候进行加载,通常只使用 DLL 文件,使用 extern “C” 的方式导出 DLL,不采用 _declspec(dllexport)。此外,为了避免增加启动时间和浪费内存,只在依赖项中添加需要的文件。
动态链接库如何导出
动态链接库如何导出
动态链接库的导出方法有两种,一种是通过向导出的动态链接库中添加函数关键字,使用__declspec(dllexport)声明要导出的各个函数,如需在应用程序中进行 DLL 函数导出,需使用__declspec(dllimport),另外通过包含 define 语句和 ifdef 语句的头文件进行导出和导入语句的区分;另一种是通过创建模块定义文件列出需要导出的动态链接库函数,这种方法无需添加函数关键字,通过模块定义文件声明 DLL 的 LIBRARY 语句和 EXPORTS 语句。