2010-07-06 81 views
0

即時得到下面的錯誤,而試圖代碼由C轉換爲C++:錯誤C2440:「初始化」:無法從「LPVOID」轉換爲「UINT

錯誤C2440:初始化:不能從轉換」 LPVOID '到 'UINT(__cdecl *)(LPVOID,UINT,LPWSTR,UINT)'

下面是一段代碼導致的問題:

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

如何解決呢?

回答

6

您試圖說服編譯器將0x4347e0(其類型爲'int')視爲指向具有4個參數的函數的指針。將int轉換爲LPVOID並不能滿足編譯器的需要 - 您需要將其轉化爲正確的東西:

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