描述:
D:\WTL71\include\atlmisc.h(1159) : error C2440: “return”: 无法从“const char *”转换为“TCHAR *”
转换丢失限定符
D:\WTL71\include\atlmisc.h(1164) : error C2440: “return”: 无法从“const char *”转换为“TCHAR *”
转换丢失限定符
D:\WTL71\include\atlmisc.h(1174) : error C2440: “return”: 无法从“const char *”转换为“TCHAR *”
转换丢失限定符
D:\WTL71\include\atlmisc.h(1189) : error C2440: “return”: 无法从“const char *”转换为“TCHAR *”
转换丢失限定符
这是相应的4个出错行:
atlmisc.h(1159): return _tcschr(p, ch);
atlmisc.h(1164): return _tcsrchr(p, ch);
atlmisc.h(1174): return _tcsstr(pStr, pCharSet);
atlmisc.h(1189): return _tcspbrk(p, lpszCharSet);
可包含H文件里明明有呀
解决方案1:
VS2005还是直接用WTL8.0吧
解决方案2:如果你已经肯定了使用UNICODE,那么不用_T("")也行,直接用L"..."、WCHAR、LPCWSTR等等UNICODE数据类型,不要使用char char*之类的ANSI类型,除非由某些外部接口规定了必须使用ANSI字符串,那么要转换,可以用WideCharToMultiBytes等API,或者使用 W2A 之类的转换宏
解决方案3: WTL3.0系列使用在VC6平台上
WTL7.0系列使用在VC7平台上,即vs2003
WTL8.0系列使用在VC8平台上,即vs2005.
你wtl7.1的代码可能是和mfc8不太兼容,你可尝试使用wtl8的sample,或者将wtl7.1的代码进行更改。
你的代码出现问题,那是因为vs2005默认使用unicode编码的原因,按照1楼所说使用_T()宏即可。
字符集的问题
试试wtl8.0与vs2005的配合。
解决方案6: 修改编译选项,把UNICODE改成多字节字符集。
其实主要原因是你的编码习惯不太好,字符串最好都用_T("...")宏,字符串函数都用_txxxxx之类的编码自适应函数,保证不会出现这种编译问题。