【问题标题】:Why some programs require both .lib and .dll to work为什么有些程序需要 .lib 和 .dll 才能工作
【发布时间】:2016-07-27 02:14:14
【问题描述】:

当我准备为(SDLSimple DirectMediaLayer)搭建开发环境时,我下载了网站提供的包,从readme.txt文件中发现我需要.lib.dll...

我的问题是:

  1. 我不确定我的理解是否正确:在我看来,.lib 代表 windows 就像 .a 代表 linux,是 静态库.dll 代表windows 就像 .so 对应 linux,是共享库,对吗?
  2. 如果上面的想法是正确的,我想我们只能使用.lib.dll,因为他们所做的工作是一样的?那么,为什么还要在一个程序中同时获得两个
  3. 而且我不太了解.dll,如果我的记忆对我来说是正确的,shared library 的优势之一是它们可以在程序运行时更新,那么如果我们更新,人们怎么能做到这一点.dll 文件,正在运行的程序如何知道.dll 的变化并将其重新加载到内存中?

【问题讨论】:

    标签: dll shared-libraries static-libraries .lib


    【解决方案1】:

    在 VC 中,有两种库。

    第一种类型是“真实库”,由“静态库项目”生成,其中包含您可以链接和运行的所有内容,无需 dll。

    第二种是“导入库”,由“dll项目”生成,它只包含link.exe需要的符号。您可以链接到库,但您需要 dll 才能运行。

    有两种使用 dll 的方法。链接到“导入库”或“使用 LoadLibrary API”。

    加载dll时不能更改dll文件。

    但是如果你使用LoadLibrary加载dll,你可以使用FreeLibrary卸载dll,更改dll然后使用LoadLibrary加载新的dll。当然,您需要监视某些东西来调用此过程。

    更简单的方法是,使用加载器进行更新,然后加载真正的 exe。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-21
      • 2017-08-27
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      相关资源
      最近更新 更多