尝试将代码从C转换为C ++时出现以下错误:
错误C2440:'初始化':无法从'LPVOID'转换为'UINT(__ cdecl *)(LPVOID,UINT,LPWSTR,UINT)'
以下是导致问题的代码:
UINT (*GetString)( LPVOID rsrc, UINT res, LPWSTR buf, UINT len )
= (LPVOID)0x4347e0;
我该如何解决?
答案 0 :(得分:6)
您试图说服编译器将0x4347e0(类型为'int')视为指向带有4个参数的函数的指针。将int转换为LPVOID不会满足编译器 - 您需要将其强制转换为正确的东西:
typedef UINT (*GetStringFnPtr)(LPVOID rsrc, UINT res, LPWSTR buf, UINT len );
GetStringFnPtr GetString = (GetStringFnPtr)0x4347e0;