C++ 无法从char转换为void* SAFEARRAYBOUND绑定[1]={25,0}; SAFEARRAY*psa=SafeArrayCreate(VT_UI1,1,绑定); 对于(long int i=0;i
您没有向我们显示错误,但它似乎将指向元素的指针作为第三个参数。我相信如果您使用:C++ 无法从char转换为void* SAFEARRAYBOUND绑定[1]={25,0}; SAFEARRAY*psa=SafeArrayCreate(VT_UI1,1,绑定); 对于(long int i=0;i,c++,windows,C++,Windows,您没有向我们显示错误,但它似乎将指向元素的指针作为第三个参数。我相信如果您使用: 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]); 请注意,&您没有向我们显示错误,但它似乎将指向元素的指针作为第三个参数。
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]);
请注意,
&
您没有向我们显示错误,但它似乎将指向元素的指针作为第三个参数。我相信如果您使用:
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]);
注意
&
在这种情况下,使用SafeArrayAccessData()
而不是SafeArrayPutElement()
会更有效:
或:
SAFEARRAYBOUND绑定[1]={25,0};
SAFEARRAY*psa=SafeArrayCreate(VT_UI1,1,绑定);
无符号字符*pvData;
安全阵列访问数据(psa,(无效**)和pvData);
对于(long int i=0;i而言,在这种情况下,使用SafeArrayAccessData()
而不是SafeArrayPutElement()
,效率会更高:
或:
SAFEARRAYBOUND绑定[1]={25,0};
SAFEARRAY*psa=SafeArrayCreate(VT_UI1,1,绑定);
无符号字符*pvData;
安全阵列访问数据(psa,(无效**)和pvData);
对于(long int i=0;i),您可能需要告诉我们SAFEARRAY的定义/BOUND@user什么是sendBuf
?如果是字符数组,则sendBuf[i]
给出了该索引处的字符。您还忘了包含所得到的错误。这里定义了SAFEARRAY:SAFEARRAYBOUND也在该部分中。@mkb-没有意识到这是microsoft的“标准”调用,因为它没有被称为长指针\u指向\u安全\u数组\u边界,并且没有将大型不透明结构作为第一个参数;-)您可能需要告诉我们SAFEARRAY的定义/BOUND@user什么是sendBuf
?如果是字符数组,则sendBuf[i]
给出了该索引处的字符。您还忘了包含所得到的错误。这里定义了SAFEARRAY:SAFEARRAYBOUND也在该部分中。@mkb-没有意识到这是microsoft的“标准”调用,因为它没有被称为长指针\u指向\u安全\u数组\u边界,并且没有将大型不透明结构作为第一个参数;-)我认为,从技术上讲,OP应该用VT_I1创建这个数组,因为源sendBuf
是有符号类型。我认为,从技术上讲,OP应该用VT_I1创建这个数组,因为源sendBuf
是有符号类型。
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);