据我了解,这些库通常与显式运行时链接(LoadLibrary)链接,但仍有一些导入库包含库的一小部分的描述符。这是什么原因?
在此先感谢和问候!
“导入库”就是:包含要在 DLL 中调用的真实函数地址的小存根。这是一篇很棒的文章,解释了为什么需要导入库 您可能还想在同一个(很棒的)博客上阅读有关链接在 Windows 世界中的工作原理
如果您对故事的另一端(执行时间)感到好奇,有一些关于 Windows 如何加载所需 DLL 的精彩文章,例如在 MSDN和此处和此处,这有助于了解您的程序为何/如何执行不调用 LoadLibrary(直接)
当您使用来自另一个 DLL 的代码或数据时,您正在导入它。当任何 PE 文件加载时,Windows 加载器的工作之一是定位所有导入的函数和数据,并使这些地址可用于正在加载的文件。
它是加载程序,根据链接器在 IAT 中编写的内容,为您加载 DLL(
在 NT Insider 上有一篇更有趣的文章,但我在网上找不到)。
它们在那里“使链接器快乐”,提供仅在 DLL 中不存在的信息。