【问题标题】:dynamic link library动态链接库
【发布时间】:2010-01-29 02:32:41
【问题描述】:

我知道动态链接库在加载应用程序时加载到内存中,引用由操作系统加载程序解析。比如在windows kernel32.dll、user32.dll和gdi32 dll中,所以如果我的应用程序引用了一个kernel32.dll中的函数,比如CreateWindow,是整个dll都必须在进程中加载​​,还是只是一部分dll?

谢谢

【问题讨论】:

    标签: windows


    【解决方案1】:

    整个事情,但别担心,它不是一遍又一遍地重新加载 dll,所有使用它的程序都有一个实例.... dll 的另一个名称是如此....或共享对象,这就是分享的重点。

    http://en.wikipedia.org/wiki/Dynamic_link_library

    【讨论】:

      【解决方案2】:

      你引用一个函数,你就得到了整个 DLL。不能只加载 DLL 的一部分。

      这很烦人,因为您获取所有 Shell32.dll 只是为了找到某人的主目录在哪里。叹息。

      【讨论】:

        【解决方案3】:

        别太担心这个,当你“加载”一个DLL时,它实际上只是一个映射的内存文件; Windows 操作系统使用缺页机制按需引入页面;因此,如果您只使用 DLL 的一小部分,您实际上不会把整个事情都搞错。

        【讨论】:

          【解决方案4】:

          只有您在该 DLL 中使用的函数是必需的,不必担心占用内存,因为这些 DLL 中的大多数都是标准的,而不仅仅是它们是动态的,这就是为什么只加载您的代码使用的某些函数的原因,而不是整个 dll。

          希望这会有所帮助, 最好的祝福, 汤姆。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-01-13
            • 1970-01-01
            • 2015-08-25
            • 1970-01-01
            • 2010-09-15
            • 2015-07-10
            • 1970-01-01
            相关资源
            最近更新 更多