.exp有什么用处,.lib和.dll有什么区别

在编译和链接期间,.exp有什么用? .lib和.dll有什么区别? 我知道.lib将被使用,而链接和.dll将在运行该程序时使用。 但.lib和.dll究竟有什么区别呢?

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

请澄清。 提前致谢

在DLL的导入库的情况下,.lib文件根本包含任何实际的代码。 它基本上只包含相关DLL中的函数列表 – 足以让链接器将对该DLL的引用embedded到与库链接的某些内容中,而不是其他内容。

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

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