编译器如何知道dll导入的函数?
How does the compiler knows the function which is imported by dll?
我对 C++ 中的头文件有疑问。
ntdll.dll中的函数无法正常调用。
(当我们包含它的头文件时我们可以调用函数,但是 nt API 的
总是由 GetProcAddress( GetModuleHandle("ntdll.dll"), "FuncName").
调用
所以我搜索了nt函数,有人说官方没有ntdll.dll的头文件,所以我必须使用GetProcAddress来调用它们。
什么是头文件?
编译器如何知道链接到头文件的dll函数?
(对于 EX,如果我们使用 MessageBox() ,那么编译器知道它在 kernel32.dll 中)
也许我猜..头文件中有dll导入上下文(语法),
例如像... windows.h 有 import "kernel32.dll" 上下文,所以编译器
可以知道。是真的吗?
您还需要 .lib
个文件。它包含函数地址。 dll .h
不需要的文件 .lib
只能尝试找到这些地址 selfstate(就像你说的那样)
我对 C++ 中的头文件有疑问。 ntdll.dll中的函数无法正常调用。 (当我们包含它的头文件时我们可以调用函数,但是 nt API 的 总是由 GetProcAddress( GetModuleHandle("ntdll.dll"), "FuncName").
调用所以我搜索了nt函数,有人说官方没有ntdll.dll的头文件,所以我必须使用GetProcAddress来调用它们。
什么是头文件? 编译器如何知道链接到头文件的dll函数? (对于 EX,如果我们使用 MessageBox() ,那么编译器知道它在 kernel32.dll 中) 也许我猜..头文件中有dll导入上下文(语法), 例如像... windows.h 有 import "kernel32.dll" 上下文,所以编译器 可以知道。是真的吗?
您还需要 .lib
个文件。它包含函数地址。 dll .h
不需要的文件 .lib
只能尝试找到这些地址 selfstate(就像你说的那样)