如何传递CString数组到SAFEARRAY?
我用C#写了一个com组件,里面有一个函数的参数是字符数组,想在VC中调用此COM组件的函数,请问如何在VC中定义一个safearray字符数组,从而把这个数组作为参数传递过去?
如果直接传CString数组出错:
cannot convert parameter 11 from 'CString [100]' to 'SAFEARRAY *
请大侠们指点下
[解决办法]
不能直接复制,逐个字符写入
[解决办法]
编写接口,用标准的C接口,参数。
这样在不同的语言之间就可以相通了。
[解决办法]
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].cElements =num;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_BSTR,1,rgsabound);
for(long index=0;index<num;index++)
{
if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))
::MessageBox(NULL,"bug!!","提示",MB_OK | MB_ICONWARNING);
}
[解决办法]
CString先转换成BSTR等,然后存入CComSafeArray
[解决办法]
类型差太远了
转换为标准的再传
[解决办法]