用VB做了个dll,其中有个函数接口是这样的:Public Function Test() as String(),在VC中返回值应该是个BSTR型的安全数组,俺想问一下,怎样才能把数组中的元素提取出来?我是这样做的,可折腾半天还是得不到数组元素的值:
SAFEARRAY *pArrPenID = NULL;
//……获取函数返回值,过程省略……
long l, u;
SafeArrayGetLBound(pArrPenID, 1, &l);
SafeArrayGetUBound(pArrPenID, 1, &u);
BSTR strReadID;
for (long i = l; i <= u; i++)
{
HRESULT hr;
if (hr = SafeArrayGetElement(pArrPenID, &i, &strReadID) != S_OK)
{
AfxMessageBox("获取数据失败"); //老是在这里提示失败
return;
}
AfxMessageBox(CString(strReadID));
}
SAFEARRAY *pArrPenID = NULL;
//……获取函数返回值,过程省略……
long l, u;
SafeArrayGetLBound(pArrPenID, 1, &l);
SafeArrayGetUBound(pArrPenID, 1, &u);
BSTR strReadID;
for (long i = l; i <= u; i++)
{
HRESULT hr;
if (hr = SafeArrayGetElement(pArrPenID, &i, &strReadID) != S_OK)
{
AfxMessageBox("获取数据失败"); //老是在这里提示失败
return;
}
AfxMessageBox(CString(strReadID));
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货