0 c++
我在尝试将代码从C转换为C++时遇到以下错误:
错误C2440:'初始化':无法从'LPVOID'转换为'UINT(__ cdecl*)(LPVOID,UINT,LPWSTR,UINT)'
这是造成问题的代码段:
UINT (*GetString)( LPVOID rsrc, UINT res, LPWSTR buf, UINT len )
= (LPVOID)0x4347e0;
Run Code Online (Sandbox Code Playgroud)
我如何解决它?
您试图说服编译器将0x4347e0(类型为'int')视为指向采用4个参数的函数的指针.将int转换为LPVOID不会满足编译器 - 您需要将其强制转换为正确的东西:
typedef UINT (*GetStringFnPtr)(LPVOID rsrc, UINT res, LPWSTR buf, UINT len );
GetStringFnPtr GetString = (GetStringFnPtr)0x4347e0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1494 次 |
| 最近记录: |