无法从字符转换为无效*

cannot convert from char to void*

本文关键字:无效 转换 字符      更新时间:2023-10-16
SAFEARRAYBOUND bound[1] = {25, 0};
SAFEARRAY * psa = SafeArrayCreate(VT_UI1, 1, bound);
for(long int i = 0; i <25; i++)
    SafeArrayPutElement(psa, &i,sendBuf[i]);

我正在尝试从字符数组创建安全数组,但收到此错误cannot convert from char to void*sendBuf 是一个字符数组

您没有向我们显示错误,但似乎SafeArrayPutElement将指向元素的指针作为第三个参数。 我相信如果你使用:

SafeArrayPutElement(psa, &i, &sendBuf[i]);

请注意&

在这种情况下,使用 SafeArrayAccessData() 而不是 SafeArrayPutElement() 会更有效

SAFEARRAYBOUND bound[1] = {25, 0}; 
SAFEARRAY * psa = SafeArrayCreate(VT_UI1, 1, bound); 
void *pvData;
SafeArrayAccessData(psa, &pvData);
memcpy(pvData, sendBuf, 25);
SafeArrayUnaccessData(psa);

或:

SAFEARRAYBOUND bound[1] = {25, 0}; 
SAFEARRAY * psa = SafeArrayCreate(VT_UI1, 1, bound); 
unsigned char *pvData;
SafeArrayAccessData(psa, (void**)&pvData);
for(long int i = 0; i <25; i++)     
    pvData[i] = sendBuf[i];
SafeArrayUnaccessData(psa);