注册 登录
编程论坛 VC++/MFC

WideCharToMultiByte unsigned short 数组转 LPCWSTR 错误,与指向的类型无关;送种子

wang_wangrui 发布于 2014-11-19 14:52, 890 次点击
求助
            char MBModelName[40];
            pDeviceInfo->m_SelectedSDK = CAMERA_ENUM_PRSDK;
            memcpy( &((pDeviceInfo->SrcInfo).SelectedSrc_PRSDK), &(pGetDevList->DeviceInfo[index]), sizeof(prDeviceInfoTable) );
            WideCharToMultiByte(CP_ACP, 0, (pDeviceInfo->SrcInfo).SelectedSrc_PRSDK.ModelName, -1, MBModelName, 40-1, 0, 0);

            m_CameraList.InsertString(index, (const char *)MBModelName);
            m_CameraList.SetItemDataPtr( index, pDeviceInfo );

1>c:\documents and settings\administrator\桌面\相机开发包\49739549ps-recsdk1.1.0d\ps-recsdk 1.1.0d\sample\relctrl\comsettingdlg.cpp(107) : error C2664:

“WideCharToMultiByte”: 不能将参数 3 从“prWChar [32]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
 定义如下
typedef unsigned short         prWChar;
prWChar              ModelName[32];  
 试了加T( )无效, 现在已经是多字节字符集,,,,
这是佳能开发包的代码,原来是vc6的 现在用的vs2005,,我已经彻底被度娘伤了

解决的奖励500部种子,绝对各个美女,我们全写字楼的珍藏
4 回复
#2
天使梦魔2014-11-19 15:02
有种何用?你给做源?

别用向上类型转换,估计过了这里过不了其它。
调节工程属性,有ansi字符集
#3
wang_wangrui2014-11-19 16:02
回复 2 楼 天使梦魔
在哪里设施ansi字符集,现在使用的是多字节字符集
#4
天使梦魔2014-11-19 16:41
已经设置了?那函数版本是这样.
看来只能转换了,原声明是typedef const wchar_t* LPCWSTR;

char转换wchar_t就行了,不要用强制类型转换,不正确的.搜索一个就行了
两个互转的版本都有,我没试
程序代码:
char* WcharToChar(const wchar_t* wp)  
{  
    char *m_char;
    int len= WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),NULL,0,NULL,NULL);  
    m_char=new char[len+1];  
    WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),m_char,len,NULL,NULL);  
    m_char[len]='\0';  
    return m_char;  
}  
wchar_t* CharToWchar(const char* c)  
{  
   wchar_t *m_wchar;
    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
    m_wchar=new wchar_t[len+1];  
    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  
    m_wchar[len]='\0';  
    return m_wchar;  
}


#5
kevin4code2014-12-08 10:17
种子比较感兴趣。用用google呗
1