2011-04-01 90 views
1

這裏是FUNC:的MultiByteToWideChar WCHAR *爲char *

char *ToLowerSTR(/*char*/ WCHAR* buffer) // NEED TO FIX UNRESOLVED EXTERNAL 
{ 
    CHAR* str; 
    MultiByteToWideChar(CP_ACP, 0, str, strlen(str) + 1, buffer, sizeof(buffer)/sizeof(WCHAR)); 
.... 
return str; 
} 

和錯誤:

LNK2019:解析外部符號 「的char * __cdecl ToLowerSTR(字符*)」 (ToLowerSTR @ @ YAPADPAD @ Z)的函數引用 「無符號長__cdecl GETPID(字符*)」)

浩我可以將wchar *轉換爲char *嗎?

+0

順便說一句,我沒有看到任何C++ 0x(甚至C++)特有的東西.. – 2011-04-01 09:00:52

回答

3

你的連接器正試圖找到像一個函數:

char * ToLowerSTR(char *) 

,但你已經定義了你的函數採取WCHAR作爲參數。
看看你的函數的聲明,看看它說:WCHAR*char*

2

的錯誤是由於你的頭文件中聲明char * ToLowerSTR(char *),而你的CPP文件有不同的功能,char * ToLowerSTR(WCHAR *)

爲了正確轉換,你需要通過WCHAR緩衝區的長度到你的ToLowerStr函數(爲什麼要下載btw,它應該做什麼?)。你不能在傳遞的WCHAR *上使用sizeof - 這會給你一個指針的大小,而不是它指向的緩衝區的長度。

bool charToWChar(char const * Source, wchar_t * Dest, size_t DestLen) { 
    return MultiByteToWideChar(CP_ACP, 0, Source, -1, Dest, DestLen) != 0; 
} 

然後調用它像這樣:

char const * myString = "abc"; 
wchar_t Buffer[100]; 
charToWChar(myString, Buffer, 100); 
2

什麼默認說,加:OMG,你把東西到哪裏str點,在不正確的方向指向它(如newmalloc )第一..!

相關問題