我用C#写了一个com组件,里面有一个函数的参数是字符数组,想在VC中调用此COM组件的函数,请问如何在VC中定义一个safearray字符数组,从而把这个数组作为参数传递过去?如果直接传CString数组出错:
cannot convert parameter 11 from 'CString [100]' to 'SAFEARRAY *请大侠们指点下

解决方案 »

  1.   

       SAFEARRAY   *psa;   
        SAFEARRAYBOUND   rgsabound[1];   
         rgsabound[0].cElements   =num;   
        rgsabound[0].lLbound   =   0;   
        psa   =   SafeArrayCreate(VT_BSTR,1,rgsabound);
        for(long   index=0;index<num;index++)                       
        {   
          if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))   
            ::MessageBox(NULL,"bug!!","提示",MB_OK   |   MB_ICONWARNING);   
        }   
      

  2.   

    CString先转换成BSTR等,然后存入CComSafeArray