簡體   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]);

我正在嘗試從char數組創建一個safearray ,但得到的錯誤cannot convert from char to void* sendBuf是一個char數組

您沒有向我們顯示錯誤,但似乎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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM