函数如下:
if(wcscmp(lpstrConnection, _T("")) != 0)
m_strConnection = lpstrConnection;
报错:
error C2664: 'wcscmp' : cannot convert parameter 1 from 'const char *' to 'const unsigned short *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

解决方案 »

  1.   

    lpstrConnection这个char* 不能转换到wchar_t*
    wcscmp参数wchar_t*
    你应该用strcmp
      

  2.   

    if(strcmp(lpstrConnection, "") != 0)
      

  3.   

    改一下参数类型
    函数原型
    int wcscmp( const wchar_t *string1, const wchar_t *string2 );
      

  4.   

    应该报这样的错吧:
    error C2664: 'wcscmp' : cannot convert parameter 1 from 'const char *' to const wchar_t *”'吧
    wcscmp是UNICODE下的字符比较函数,它的参数也要是宽字符。多字节下应使用 strcmp。
    你把if(wcscmp(lpstrConnection, _T("")) != 0)  改成if(strcmp(lpstrConnection, "") != 0)应该就可以像字符操作函数,变量等,写代码时最好统一用宏代替。比如 _tcscmp宏在UNICODE下就表示wcscmp,多字节下就为strcmp. 其它函数也有同样的宏。 申明字符用TCHAR。 字符串赋值用_T("").
      

  5.   

    多谢二楼指点,我的是unicode编码,要用宽字节拷贝才行!
      

  6.   

    多谢四楼,问题解决了。但有一点不明白:
    _tcscmp和wcscmp在unicode编码下不是应该一样吗?
    为什么_tcscmp可以,但wcscmp却不行?
      

  7.   

    你看下你的工程属性:配置属性-->常规-->字符集 里是选的Unicode还是多字节。