例如,要调用 MessageBox,我只需要包含 windows.h,所以我假设一些头文件执行实际的 LoadLibrary。
这是如何工作的?
最佳答案
声明MessageBox
的Windows头文件声明了它,但没有定义它。换句话说,头文件只是声明有一个函数具有在其他地方定义的特定原型(prototype)。
定义由导入库提供。对于 MessageBox
,该导入库是 user32.lib
。该导入库被传递给链接器并提供定义。
实现MessageBox
的Windows DLL,user32.dll的实际加载是由加载器完成的。链接器发出一个可执行文件,其中包含声明依赖 DLL 和必须导入的函数的元数据。那就是 PE 导入表。在进程加载时,加载程序读取导入表、加载依赖 DLL 并解析引用。
关于c - 哪个头文件加载 Win32 api 中的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304715/