セットアップ:
マネージドC#DLL内のメソッドを呼び出すCOMDLLがあります。この関数は、SAFEARRAYにマーシャリングされるC#string[]配列を返します。
問題:
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!