[英]cannot convert from char to void*
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]);
I am trying to creating a safearray from a char array but get this error cannot convert from char to void*
sendBuf is a char array 我正在尝试从char数组创建一个safearray ,但得到的错误
cannot convert from char to void*
sendBuf是一个char数组
You didn't show us the error, but it appears SafeArrayPutElement
takes a pointer to the element as the third parameter. 您没有向我们显示错误,但似乎
SafeArrayPutElement
会将指向该元素的指针作为第三个参数。 I believe it'll work if you use: 我相信,如果您使用:
SafeArrayPutElement(psa, &i, &sendBuf[i]);
Note the &
. 注意
&
。
It would be more efficient in this case to use SafeArrayAccessData()
instead of SafeArrayPutElement()
: 在这种情况下,使用
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);
Or: 要么:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.