编译器如何知道dll导入的函数?

时间:2017-07-27 12:45:25

标签: c++ dll compiler-construction

我对c ++中的头文件有疑问。 无法正常调用ntdll.dll中的函数。 (当我们包含它的头文件时,我们可以调用函数,但是nt API' s 始终由GetProcAddress调用(GetModuleHandle(" ntdll.dll")," FuncName")。

所以我搜索了nt函数,有些人说在官方没有关于ntdll.dll的头文件,所以我必须使用GetProcAddress来调用它们。

什么是头文件? 编译器如何知道链接到头文件的dll函数? (对于EX,如果我们使用MessageBox(),那么编译器知道它在kernel32.dll中) 也许我猜..头文件中有dll导入上下文(语法), 例如... windows.h具有导入" kernel32.dll"上下文,所以编译 可以知道。这是真的吗?

1 个答案:

答案 0 :(得分:0)

您也需要.lib个文件。它包含函数地址。不需要.h的dll .lib个文件只能尝试找到这些地址自我状态(就像你说的那样);