当我想调用一些Windows函数时,比如MessageBox,我可以从user32.dll导入它并调用(使用LoadLibrary和GetProcAddress).但是还有一个Visual C使用的静态库,所以我不需要手动加载DLL和函数.他们是如何工作的?它们是否包含每次调用函数时调用LoadLibrary / GetProcAddress的包装器?
解决方法:
您所指的“静态库”实际上是一个import library.这种类型的库包含的记录告诉链接器每个函数实际存在哪个库,并且本身不包含任何代码.链接器在可执行文件中创建导入记录,加载程序在加载时解析.这会修复运行时使用的地址,因此您的代码不需要显式调用LoadLibrary和GetProcAddress.