【问题标题】:What is the use of .exp and what is the difference between .lib and .dll?.exp 有什么用,.lib 和 .dll 有什么区别?
【发布时间】:2011-02-13 04:43:30
【问题描述】:

在编译和链接过程中,.exp 有什么用? .lib 和 .dll 有什么区别?我知道将使用.lib,而在运行程序时将使用链接和.dll。但是 .lib 和 .dll 到底有什么区别呢?

.lib 文件是否不包含来自 .dll 文件的函数代码? 使用两个单独的文件有什么需要?

请澄清。

【问题讨论】:

    标签: c dll linker static-libraries


    【解决方案1】:

    对于 DLL 的导入库,.lib 文件确实包含任何实际代码。它基本上只包含相关 DLL 中的函数列表——足以让链接器将对该 DLL 的引用嵌入到与库链接的内容中,但仅此而已。

    .exp 文件是一个导出文件——基本上与 .lib 文件几乎相同。当你有一个循环依赖时,它被使用(至少主要是)。例如,假设您有一个充当可执行文件插件的 DLL。可执行文件提供一些导出的函数供插件 DLL 使用,但还需要能够调用插件中的一些函数(例如加载和初始化插件)。

    在构建可执行文件以提供 .lib 文件之前,DLL 不会链接 - 但在构建 DLL 以提供 .lib 文件之前,可执行文件不会链接。要打破依赖关系,您可以针对可执行文件运行链接器,这会失败(因为它找不到 DLL 的 .lib 文件),但生成一个 .exp 文件。然后将 DLL 链接到可执行文件的 .exp 文件。然后,您可以使用 DLL 的 .lib 文件重新运行链接以生成可执行文件。

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 2022-10-13
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多