在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?
Posted loanhicks
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?相关的知识,希望对你有一定的参考价值。
设置工程属性中的字符集Character Set为多字节字符集还是Unicode引发两个bug后,找到如下资料:
解决方法一:
通常手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。
解决方法二:
参数使用“_T”宏:
MessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK);
或是:
MessageBox(NULL, L"Openimage failed!", L"error",MB_OK);
/*
************************************************************************************************************************************************
* 当工程是Unicode编码时,_T将括号内的字符串以Unicode方式保存;当工程是多字节编码时,_T将括号内的字符串以ANSI方式保存
* 关键字“L”,则是不管编码环境是什么,都是将其后面的字符串以Unicode方式保存。
*************************************************************************************************************************************************
*/
1、用THCAR代替char
2、字符串加_T(""),如_T("你好")
3、用_tcscpy等代替strcpy等
ANSI操作函数以str开头,如strcpy(),strcat(),strlen();
Unicode操作函数以wcs开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode互为兼容的操作函数以_tcs开头 _tcscpy(C运行期库);
ANSI/Unicode互为兼容的操作函数以lstr开头 lstrcpy(Windows函数);
考虑ANSI和Unicode的兼容,需要使用以_tcs开头或lstr开头的通用字符串操作函数。
最后加上头文件 #include <tchar.h>
参考链接:http://zhidao.baidu.com/question/327887942.html?qbl=relate_question_2&word=LPWSTR
以上是关于在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章
在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?
error:"LPSTR"类型的实参数与"LPCWSTR"类型的形参不兼容
vs2017."const char *"的实参与"char *"的形参不兼容_goto跳过类型声明
vs2019报错E0167 “const wchar_t *“ 类型的实参与 “WCHAR *“ 类型的形参不兼容