这是func:
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(char *)“(?ToLowerSTR@@YAPADPAD@Z)在函数"unsigned __cdecl GetPID(char *)”中引用)
我怎样才能把wchar *转换成char *?
发布于 2011-04-01 08:47:00
您的链接器正在尝试查找如下功能:
char * ToLowerSTR(char *)但是,您已经定义了以WCHAR为参数的函数。
查看函数的声明,看看它是表示WCHAR*还是char*
发布于 2011-04-01 08:50:59
这个错误是由于您的头文件声明了一个char * ToLowerSTR(char *),而您的cpp文件有一个不同的函数char * ToLowerSTR(WCHAR *)。
为了正确地转换,您需要将WCHAR缓冲区的长度传递给您的ToLowerStr函数(为什么是ToLower,它应该做什么?)。不能在传递的sizeof上使用WCHAR * --这将给出指针的大小,而不是它指向的缓冲区的长度。
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);发布于 2011-04-01 08:52:00
默认情况下,加上:天哪,你是把东西放进str点的地方,而不是先把它指向正确的方向(比如new或malloc)。
https://stackoverflow.com/questions/5511002
复制相似问题