gpt4 book ai didi

c++ - 使用没有代码的静态库时,VC++ 是否会添加对 LoadLibrary 的调用?

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:07 25 4
gpt4 key购买 nike

请原谅我对静态库的命名,但我的意思是谈论没有代码的静态库 (.lib),但只有可能通过采用 dll 并将其作为导入库生成的引用。

我是否正确理解编译器 (MSVC++) 在这种情况下添加了像 LoadLibrary("foo.dll"); 这样的代码? GetProcAddress("barMethod");何时在您的 C++ 代码中引用?

有没有办法确定它是否真的这样做了?

也许使用某种静态分析工具来告诉我生成了什么代码?

最佳答案

静态库有代码。没有代码的 .lib 文件不是静态库,而是导入库(正如您正确观察到的那样)。

在这种情况下,VC++ 可以做两件事。默认是将导入库编译到导入地址表(IAT)中。在运行时,操作系统将解析引用。另一种方法称为延迟加载链接。在这种情况下,VC++ 确实会插入对 LoadLibrary 和 GetProcAddress 的调用。

Dependency Walker 仍然是观察这一切如何运作的相关工具。

关于c++ - 使用没有代码的静态库时,VC++ 是否会添加对 LoadLibrary 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34837051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com