COM组件里:
STDMETHODIMP CAdoProcess::test(DWORD *pData)
{
pData[0] = 0;
pData[1] = 1;
pData[2] = 2;
pData[3] = 3;
return S_OK;
}
客户调用:
DWORD *dData = new DWORD[4];
hr = pI->test(dData);
DWORD b0 = dData[0];
DWORD b1 = dData[1];
DWORD b2 = dData[2];
DWORD b3 = dData[3];
问题:为什么b1,b2,b3里值不正确?如何解决?
STDMETHODIMP CAdoProcess::test(DWORD *pData)
{
pData[0] = 0;
pData[1] = 1;
pData[2] = 2;
pData[3] = 3;
return S_OK;
}
客户调用:
DWORD *dData = new DWORD[4];
hr = pI->test(dData);
DWORD b0 = dData[0];
DWORD b1 = dData[1];
DWORD b2 = dData[2];
DWORD b3 = dData[3];
问题:为什么b1,b2,b3里值不正确?如何解决?
STDMETHODIMP CAdoProcess::test(DWORD **pData)
{
*pData[0] = 0;
*pData[1] = 1;
*pData[2] = 2;
*pData[3] = 3;
return S_OK;}
使用的时候
DWORD *dData = new DWORD[4];
hr = pI->test(&dData);
{
VariantInit(pVal);
pVal->vt = VT_ARRAY | VT_I4;
SAFEARRAY * psa;
SAFEARRAYBOUND bd = {10 /* 假定10个元素 */, 0 /*坐标下界*/};
psa = SafeArrayCreate(VT_I4 /*int 类型*/,1 /*一维数组*/, &bd);
int *pData;
SafeAccessData(psa, (void **)&pData);
//***************
// 对pData[]赋值
for (int i =0;i<10;i++)
{
pData[i]=1; //全为1
}
//***************
SafeUnaccessData(psa);
pVal->parray = psa;
return (S_OK);
}
问题已解决