не может конвертировать из char в void * - PullRequest
0 голосов
/ 13 марта 2012
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]);

Я пытаюсь создать safearray из массива char, но получаю эту ошибку cannot convert from char to void* sendBuf - это массив char

Ответы [ 2 ]

3 голосов
/ 13 марта 2012

Вы не показывали нам ошибку, но, похоже, SafeArrayPutElement принимает указатель на элемент в качестве третьего параметра.Я считаю, что это будет работать, если вы используете:

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

Обратите внимание на &.

1 голос
/ 14 марта 2012

В этом случае было бы более эффективно использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...