错误C2440:'初始化':无法从'LPVOID'转换为'UINT

时间:2010-07-06 08:43:04

标签: c++

尝试将代码从C转换为C ++时出现以下错误:

错误C2440:'初始化':无法从'LPVOID'转换为'UINT(__ cdecl *)(LPVOID,UINT,LPWSTR,UINT)'

以下是导致问题的代码:

UINT (*GetString)( LPVOID rsrc, UINT res, LPWSTR buf, UINT len )
       = (LPVOID)0x4347e0;

我该如何解决?

1 个答案:

答案 0 :(得分:6)

您试图说服编译器将0x4347e0(类型为'int')视为指向带有4个参数的函数的指针。将int转换为LPVOID不会满足编译器 - 您需要将其强制转换为正确的东西:

typedef UINT (*GetStringFnPtr)(LPVOID rsrc, UINT res, LPWSTR buf, UINT len );
GetStringFnPtr GetString = (GetStringFnPtr)0x4347e0;