代码之家  ›  专栏  ›  技术社区  ›  Vineel Kumar Reddy

.exp的用法是什么?.lib和.dll有什么区别?

  •  58
  • Vineel Kumar Reddy  · 技术社区  · 14 年前

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

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

    请澄清。

    1 回复  |  直到 6 年前
        1
  •  81
  •   Jerry Coffin    14 年前

    对于dll的导入库,.lib文件 包含任何实际代码。它基本上只包含关联dll中的函数列表——足够链接器将对该dll的引用嵌入到与库链接的某个对象中,但其他的就不多了。

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

    在生成可执行文件以提供.lib文件之前,dll不会链接,但在生成dll以提供.lib文件之前,可执行文件不会链接。若要中断依赖关系,请针对可执行文件运行链接器,但该可执行文件失败(因为它找不到dll的.lib文件),但 生成.exp文件。然后将该dll链接到可执行文件的.exp文件。然后可以使用dll的.lib文件重新运行link以生成可执行文件。