我正在尝试使源代码工作
extern "C" {
typedef LRESULT (__stdcall *NRI_PM_CALLBACK)(WPARAM, LPARAM);
}
LRESULT OnPaymentManagerMessage(WPARAM wParam, LPARAM lParam)
{
int type = (wParam >> 4) & 0x0F;
int device = wParam & 0x0F;
//cstr.Format("** Msg **[ %d %d %d ]", type, device, lParam);
//handle message here
return lParam;
}
NRI_PM_CALLBACK callback = &OnPaymentManagerMessage; //error on this line
错误:“LRESULT (*)(WPARAM wParam, LPARAM lParam)”类型的值不能用于初始化“NRI_PM_CALLBACK”类型的实体
我在 Visual Studio Express 2012 中运行它
有什么想法吗?
谢谢
最佳答案
使 OnPaymentManagerMessage()
成为一个 __stdcall
函数:
LRESULT __stdcall OnPaymentManagerMessage(WPARAM wParam, LPARAM lParam)
/* ... */
__cdecl
是编译器的默认设置(尽管编译器选项可以更改它)。
关于C++函数指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130847/