c++ - 错误 : invalid conversion from 'int (*)()' to 'long unsigned int'

标签 c++ winapi

我是 C++ 的新手,我正在尝试理解此论坛上的代码 http://www.blizzhackers.cc/viewtopic.php?p=2483118 .我已经设法解决了大部分错误,但这个错误让我感到困惑,这里是函数中的代码给我带来了问题。

void LoadDll(char *procName, char *dllName)
{
    HMODULE hDll;
    unsigned long cbtProcAddr;

    hDll = LoadLibrary(dllName);
    cbtProcAddr = GetProcAddress(hDll, "CBTProc"); // The error points to this line

    SetWindowsHookEx(WH_CBT, cbtProcAddr, hDll, GetTargetThreadIdFromProcname(procName));
}

最佳答案

cbtProcAddr 的定义更改为:

HOOKPROC cbtProcAddr;

编译器不高兴,因为您试图将指针类型的值存储在声明为保存整数的变量中。 (您可能需要将 GetProcAddress() 的结果转换为 HOOKPROC,因为该函数不知道指向函数的实际签名,但使用SetWindowsHookEx() 调用中的指针暗示它与 HOOKPROC 函数指针类型的签名兼容。)

关于c++ - 错误 : invalid conversion from 'int (*)()' to 'long unsigned int' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020918/

相关文章:

c++ - 在文本框中使用 WM_CHAR 输入处理的 gobbledygook

c++ - 退出 Qt 应用程序不会杀死生成的线程

delphi - 判断当前app的父进程

c - 如何仅使用 C 列出和操作 Windows 文件?

c++ - 检测 WM_MOUSEMOVE 是否由触摸/笔引起

c# - 如何读取扩展文件属性/文件元数据

c++ - C++ 标准库中 boost::variant 的等价物是什么?

c++ - 导出符号是什么意思?

c++ - 对通过引用返回感到困惑

c++ - 编译错误: error C2704: __va_start intrinsic only allowed in varargs?的含义