0
設置:
我有一個COM DLL調用託管的C#DLL中的方法。該函數返回一個C#string []數組,該數組被封送到SAFEARRAY。傳遞託管(C#)字符串[]數組到一個COM DLL
問題:
當我嘗試到SAFEARRAY中訪問字符串我只得到字符串的第一個字符。我究竟做錯了什麼?
代碼:
// Pointer to the managed interface
DatabasePtr pODB(__uuidof(DBClass));
// Get the string[] array from the managed method
SAFEARRAY* safearray = pODB->GetStringArray();
HRESULT hresult;
long ubound;
long lbound;
hresult = SafeArrayGetUBound(safearray, 1, &ubound);
hresult = SafeArrayGetLBound(safearray, 1, &lbound);
long index;
BSTR fromarray;
for (; lbound <= ubound; lbound++)
{
index = lbound;
hresult = SafeArrayGetElement(safearray, &index, (void*)&fromarray);
char buffer[512];
sprintf_s(buffer,"%s",fromarray);
MessageBox(0, (LPCSTR)buffer, "...", 0);
}
感謝您的幫助,
-Sean!
感謝您的幫助。你是什麼意思,「不要像這樣堆棧溢出?」 – Sean 2009-05-18 00:45:46