当我想调用某些 Windows 函数时,例如 MessageBox,我可以从 user32.dll 导入它并调用(使用 LoadLibrary 和 GetProcAddress)。但是还有一个Visual C++使用的静态库,所以我不需要手动加载DLL和函数。它们是如何工作的?它们是否包含每次调用函数时调用 LoadLibrary/GetProcAddress 的包装器?
最佳答案
您所指的“静态库”实际上是一个 import library .这种类型的库包含告诉链接器每个函数实际存在于哪个库中的记录,并且本身不包含任何代码。链接器在可执行文件中创建导入记录,加载器在加载时解析这些记录。这修复了运行时使用的地址,因此您的代码不需要显式调用 LoadLibrary
和 GetProcAddress
。
关于c++ - 静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705869/