简体   繁体   English

无法从char转换为void *

[英]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.

相关问题 无法将参数4从&#39;void&#39;转换为&#39;const char *&#39; - Cannot convert parameter 4 from 'void' to 'const char *' 无法将参数&#39;2&#39;的&#39;char *(*)[6]&#39;转换为&#39;char ***&#39;到&#39;void prac(int *,char ***)&#39; - Cannot convert 'char*(*)[6]' to 'char***' for argument '2' to 'void prac(int*,char***)' 无法将类型&#39;void(classname ::)(unsigned char,int,int)&#39;的&#39;classname :: glutKeyboard&#39;转换为类型&#39;void(*)(unsigned char,int,int)&#39;的类型 - cannot convert 'classname::glutKeyboard' from type 'void (classname::)(unsigned char, int, int)' to type 'void (*)(unsigned char, int, int)' 无法从char ***转换为char ** - Cannot convert from char*** to char** 无法从“ void”转换为“ int” - cannot convert from “void” to “int” 无法从void转换为int - Cannot convert from void to int 错误 C2664:“int printf(const char *const,…)”:无法将参数 2 从“void”转换为“…” - error C2664: 'int printf(const char *const ,…)': cannot convert argument 2 from 'void' to '…' 将void(*)()转换为void(*)(unsigned char) - Convert void (*)() to void (*)(unsigned char) 无法从类型void *(classname::)()转换为类型void *(*)(void *) - cannot convert from type void*(classname::) () to type void*(*)(void*) JavaCPP 错误:无法将参数 '1' 的 `char*` 转换为 `Abc*` 到 `void testMyObject(Abc*)` - JavaCPP error: cannot convert `char*` to `Abc*` for argument ‘1’ to `void testMyObject(Abc*)`
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM