在编译和链接过程中,.exp有什么用? .lib 和 .dll 有什么区别?我知道运行程序时会使用.lib,而链接和.dll将被使用。但.lib 和.dll 之间到底有什么区别呢?
.lib 文件是否不包含来自 .dll 文件的函数的代码?
使用两个单独的文件有什么必要?
请澄清。
对于 DLL 的导入库,.lib 文件不会not根本不包含任何实际代码。它基本上只包含关联 DLL 中的函数列表——足以让链接器将对该 DLL 的引用嵌入到与库链接的内容中,但仅此而已。
.exp 文件是导出文件——基本上与 .lib 文件相同。当你有循环依赖时,它会被使用(至少主要是)。例如,假设您有一个充当可执行文件插件的 DLL。可执行文件提供一些导出函数供插件 DLL 使用,但也需要能够调用插件中的一些函数(例如加载和初始化插件)。
在构建可执行文件以提供 .lib 文件之前,DLL 不会链接,但在构建 DLL 以提供 .lib 文件之前,可执行文件不会链接。要打破依赖性,您可以针对可执行文件运行链接器,但会失败(因为它找不到 DLL 的 .lib 文件),但是will生成一个 .exp 文件。然后,将 DLL 链接到可执行文件的 .exp 文件。然后,您可以使用 DLL 的 .lib 文件重新运行链接以生成可执行文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)