我是 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/