最佳答案
我知道这对于极客来说似乎很简单,但是我想把它说清楚。
当我想使用 Win32DLL 时,通常我只调用诸如 LoadLibrary ()和 GetProcAdderss ()之类的 API。但是最近,我正在使用 DirectX9进行开发,我需要添加 D3d9.lib、 D3dx9.lib等文件。
我已经听够了 LIB 是用于静态链接的,而 DLL 是用于动态链接的。
因此,我目前的理解是,LIB 包含方法的实现,并在链接时作为最终 EXE 文件的一部分静态链接。而 DLL 是在运行时动态加载的,不是最终 EXE 文件的一部分。
但是有时候,有一些 LIB 文件 一起来的 DLL 文件,所以:
在查看了维基百科之后,我记得这些 LIB 文件被称为 进口图书馆。 但是我想知道它是如何与我的主应用程序和动态加载的 DLL 一起工作的。
正如 RBerteig 所说,在与 DLL 一起生成的 LIB 文件中有一些存根代码。所以调用序列应该是这样的:
我的主应用程序—— > LIB 中的存根—— > real target DLL
那么,这些 LIBs 应该包含哪些信息呢:
我说的对吗,还有别的吗?
顺便问一下: 有没有什么工具可以检查导入库?如果我看到了,就不会再有怀疑了。