c++ - 我应该使用 GetProcAddress 还是只包含各种 win32 库?

标签 c++ c winapi

想知道有什么区别:

static PROCESSWALK pProcess32First=(PROCESSWALK)GetProcAddress(hKernel,"Process32First");
...
pProcess32First(...);

什么是hKernel?找here .您可以替换为 GetModuleHandle()

#include <Tlhelp32.h>
...
Process32First(...);

有什么区别,我想知道我应该使用哪个。那么在最佳实践方面有什么不同吗?

最佳答案

注意:我的回答假设该函数以任何一种方式都可用,如果您使用非导出函数,还需要考虑其他事项。

如果您使用 LoadLibrary 和 GetProcAddress,那么如果所需的库不存在,您可以选择以缩减的功能运行。如果您使用包含并直接链接库,并且 dll 不存在(或由于版本错误而没有导出),您的应用将无法加载。

只有当您想要使用某个给定 dll 的所有版本中都没有的函数时,它才会有所不同。

关于c++ - 我应该使用 GetProcAddress 还是只包含各种 win32 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/493447/

相关文章:

c++ - 在类计时器中重载前缀和后缀增量。调试时出现问题

c - Mac OS 等同于 Windows Fibers API?

c - PQunescapeBytea() 为 E'\n'::bytea 返回类似 "x0a"的字符串

c - 使用 _tprintf 错误地打印出二进制文件

c# - .Net 中的多显示器任务栏

c++ - 函数名称上不明确的星号运算符

方法链的 C++ lambda 表达式

ios - 无法通过测试用例 iOS 将数据插入 sqlite 数据库

c++ - D3D 特征级别问题

c++ - 下标 ("[ ] ")运算符给出奇怪的错误