我的项目从多字节字符集项目更改为unicode字符集。因此,需要转换许多变量类型以匹配参数类型。我创建了一个将char[]
类型转换为LPWSTR
的函数。以下是代码:
LPWSTR CharFunction::CharToLPWSTR(char charVariable[])
{
LPWSTR returnVariable;
MultiByteToWideChar(CP_UTF8, 0, charVariable, -1, returnVariable, 2048);
return returnVariable;
}
然而,还有
xxxx.exe中0x77a9007e处的未处理异常:0xC0000005:访问冲突写入位置0x7712311e。
我发现它可以第一次运行,但错误发生在第二次
MultiByteToWideChar(CP_UTF8, 0, charVariable, -1, returnVariable, 2048);
我花了3个小时来调试,但没有运气。如果有人能帮我修复这个bug,我将不胜感激。谢谢。
更新
下面是声明变量并将值传递给函数的代码片段。
LPWSTR g_szSystemIni;
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
_splitpath_s(szModuleName_converted, drive, _MAX_DRIVE, dir, _MAX_DIR, fname, _MAX_FNAME, ext, _MAX_EXT );
lstrcpy(g_szSystemIni,charfunction.CharToLPWSTR(drive));
lstrcat(g_szSystemIni,charfunction.CharToLPWSTR(dir));