MFC调用VLC库播放中文路径导致崩溃的问题
MFC中直接将中文路径从CString转换为char字符串,并播放导致崩溃
是字符编码的问题,程序使用的是unicode编码而vlc使用 的是utf-8编码
解决方法:
通过以下函数直接将中文路径CString转换为utf8编码的char*字符串,并使用vlc播放此路径
char* UniToUTF8(CString strUnicode)
{
USES_CONVERSION;
LPWSTR pwStr=new wchar_t[strUnicode.GetLength()+1];
wcscpy(pwStr,T2W((LPTSTR)(LPCTSTR)strUnicode));
int ilen = WideCharToMultiByte(CP_UTF8, 0, pwStr, -1, NULL, 0, NULL, NULL);
char *szUtf8Temp=new char[ilen + 1];
memset(szUtf8Temp, 0, ilen +1);
WideCharToMultiByte (CP_UTF8, 0, pwStr, -1, szUtf8Temp, ilen, NULL,NULL);
return szUtf8Temp;
}