首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.exp的用途是什么?.lib和.dll有什么区别?

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

Stack Overflow用户
提问于 2010-04-28 13:26:44
回答 1查看 20.3K关注 0票数 79

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

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

请澄清。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-28 13:38:22

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

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

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

票数 108
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2727020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档