下面这段程序编译错在writestatus=phdadmin_putdata(phdpt,phd_tagname, phd_time, phd_val, &j)这句话:

                           CString s_phdtagname;

LPWSTR phd_tagname;
LPCSTR sw_phd_tagname;
s_phdtagname=m_tag_list.GetItemText(i,8);//µÃµ½PHDÖеãÃû²¢×ª»»³ÉUNICODE
sw_phd_tagname=s_phdtagname;
int  phd_tagename_len=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,sw_phd_tagname,-1,NULL,0);  
phd_tagname=new  wchar_t[phd_tagename_len+1]; 
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,sw_phd_tagname,-1,phd_tagname,phd_tagename_len+1);

CString s_phd_tagname,s_phd_time,istat,s_phd_va;
writestatus=phdadmin_putdata(phdpt,phd_tagname, phd_time, phd_val, &j);//ת·¢ÈëPHD UpdateData(FALSE);编译错误信息是:
F:\vc\PITOPHD\PIDlg.cpp(248) : error C2664: 'phdadmin_putdata' : cannot convert parameter 2 from 'unsigned short *' to 'char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast谁能解决这个问题?

解决方案 »

  1.   

    函数的第二个参数,要求是char *,你传的是wchar ×,当然不对了!你不需要转化,直接传sw_phd_tagname就可以了!
      

  2.   

    我去掉以下三句:
    //*int  phd_tagename_len=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,sw_phd_tagname,-1,NULL,0);  
    //*phd_tagname=new  wchar_t[phd_tagename_len+1]; 
    //*MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,sw_phd_tagname,-1,phd_tagname,phd_tagename_len+1);编译就报如下错:
    F:\vc\PITOPHD\PIDlg.cpp(248) : error C2664: 'phdadmin_putdata' : cannot convert parameter 2 from 'const char *' to 'char *'
            Conversion loses qualifiers
      

  3.   

    出错这句改为了writestatus=phdadmin_putdata(phdpt,sw_phd_tagname, phd_time, phd_val, &j);//转发入PHD