Direct3D导入库的目的是什么?

时间:2013-03-29 10:50:05

标签: c++ winapi dll com directx

据我所知,这些库通常与显式运行时链接(LoadLibrary)链接,但仍然存在那些包含库的一小部分子集的描述符的导入库。这是什么原因?

提前致谢和问候!

1 个答案:

答案 0 :(得分:3)

“导入库”就是这样的:小存根,包含要在DLL内调用的实际函数的地址。 这是一篇很好的帖子,解释why you need import libraries 您可能还想了解链接在Windows世界on the same (great) blog

中的工作原理

如果您对故事的另一端(执行时间)感到好奇,那么有一些很棒的文章介绍了Windows如何加载所需的DLL,example on MSDNhere以及{{3} },这有助于理解你的程序为什么/如何不调用LoadLibrary(直接)

  

当您使用来自其他DLL的代码或数据时,您正在导入它。加载任何PE文件时,Windows加载程序的一个作业是找到所有导入的函数和数据,并使这些地址可用于正在加载的文件。

根据链接器在IAT中写入的内容,加载器将加载DLL (有一篇关于NT内幕的更有趣的文章,但我无法在网上找到它。)

它们是为了“使链接器满意”,提供仅在DLL中不存在的信息。