2

据我了解,这些库通常与显式运行时链接(LoadLibrary)链接,但仍有一些导入库包含库的一小部分的描述符。这是什么原因?

在此先感谢和问候!

4

1 回答 1

3

“导入库”就是:包含要在 DLL 中调用的真实函数地址的小存根。这是一篇很棒的文章,解释了为什么需要导入库 您可能还想在同一个(很棒的)博客上阅读有关链接在 Windows 世界中的工作原理

如果您对故事的另一端(执行时间)感到好奇,有一些关于 Windows 如何加载所需 DLL 的精彩文章,例如在 MSDN此处此处,这有助于了解您的程序为何/如何执行不调用 LoadLibrary(直接)

当您使用来自另一个 DLL 的代码或数据时,您正在导入它。当任何 PE 文件加载时,Windows 加载器的工作之一是定位所有导入的函数和数据,并使这些地址可用于正在加载的文件。

它是加载程序,根据链接器在 IAT 中编写的内容,为您加载 DLL(
在 NT Insider 上有一篇更有趣的文章,但我在网上找不到)。

它们在那里“使链接器快乐”,提供仅在 DLL 中不存在的信息。

于 2013-03-29T12:10:23.203 回答