当我想调用一些Windows函数,比如MessageBox时,我可以从user32.dll中导入它并调用(使用LoadLibrary和GetProcAddress)。但是Visual C++还使用了一个静态库,因此我不需要手动加载DLL和函数。它们是如何工作的?它们是否包含包装器,每次调用函数时都会调用LoadLibrary/GetProcAddress?
LoadLibrary
和GetProcAddress
。LoadLibrary
和GetProcAddress
解析每个函数,并将结果保存到静态表(IAT,导入地址表)中。这只做一次。还有“延迟加载”DLL的概念,它仅在第一次调用函数时才解析地址,但很少使用。