首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiByteToWideChar wchar * to char *

MultiByteToWideChar wchar * to char *
EN

Stack Overflow用户
提问于 2011-04-01 08:43:25
回答 3查看 2.5K关注 0票数 0

这是func:

代码语言:javascript
复制
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 *?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-01 08:47:00

您的链接器正在尝试查找如下功能:

代码语言:javascript
复制
char * ToLowerSTR(char *)

但是,您已经定义了以WCHAR为参数的函数。

查看函数的声明,看看它是表示WCHAR*还是char*

票数 2
EN

Stack Overflow用户

发布于 2011-04-01 08:50:59

这个错误是由于您的头文件声明了一个char * ToLowerSTR(char *),而您的cpp文件有一个不同的函数char * ToLowerSTR(WCHAR *)

为了正确地转换,您需要将WCHAR缓冲区的长度传递给您的ToLowerStr函数(为什么是ToLower,它应该做什么?)。不能在传递的sizeof上使用WCHAR * --这将给出指针的大小,而不是它指向的缓冲区的长度。

代码语言:javascript
复制
bool charToWChar(char const * Source, wchar_t * Dest, size_t DestLen) {
  return MultiByteToWideChar(CP_ACP, 0, Source, -1, Dest, DestLen) != 0;
}

那就这样说吧:

代码语言:javascript
复制
char const * myString = "abc";
wchar_t Buffer[100];
charToWChar(myString, Buffer, 100);
票数 1
EN

Stack Overflow用户

发布于 2011-04-01 08:52:00

默认情况下,加上:天哪,你是把东西放进str点的地方,而不是先把它指向正确的方向(比如newmalloc)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5511002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档