动态链接库-共享对象-共享库-ShareObject-SO-dll

梗概:

  • 其实就相当于程序的依赖模块, 用来被其他模块或可执行程序引用
  • Linux下的拓展名为so,windows下的拓展名为dll
  • Dynamic Link Library属于运行时库
  • DLL对外暴露的接口遵循某种调用约定
    • 函数的话,通常是cdecl

适用范围

  • C语言
    • 动态链接库的api接口都是C语言语义的 child::

      适用范围

      场景

      • 模块内容较大
      • 被引用数量较多

      1. 优点:

      • 代码复用
        • 一个动态链接库同时被所有其他程序所使用
      • 减少主程序的体积大小
      • 较少程序运行时的内存消耗
      • 动态函数库的升级比较方便。
        • 动态函数库的改变并不影响你的程序

      缺点

      • 比较重型
        • 如果某个程序仅仅使用这个库中的一小部分API,但依然会加载整个动态链接库到内存中
      指向原始笔记的链接

实例:

概念

  • 用C语言编译出来的应用程序main.exemain2.exe,都需要依赖动态链接库lib.dll
  • 当运行main.exe的时候,lib.dll就会加载到内存中,供main.exe调用
  • 当再同时运行main2.exe时,因为lib.dll已经加载到内存中了,所以直接和main.exe共享同一个lib.dll动态链接库

nodejs调用dll

Nodejs如何调用Dll模块 - 掘金

详解

【底层】动态链接库(dll)是如何工作的?_哔哩哔哩_bilibili