我用vc写了个dll,想返回double类型的数组,并且能够在vb中调用此数组的结果,该怎样做?
谢谢各位!最好能给出例子.

解决方案 »

  1.   

    VC中函数定义一个double型指针参数,VB中将此参数定义为值传递。
      

  2.   


    long func(VARIANT* p_var)
    {
        SAFEARRAYBOUND bound[1]={ len };//传递一个数组,这里使用了SafeArray
       
        CComSafeArray<BYTE> x( bound );
        for( int i=0;i<len;i++){
            x[i]=i;
        }
        p_var->vt = VT_ARRAY|VT_UI1;
        x.CopyTo( &(p_var->parray) );
        return 0;
    }
      

  3.   


    long func(VARIANT* p_var)
    {
        SAFEARRAYBOUND bound[1]={ len };//传递一个数组,这里使用了SafeArray
       
        CComSafeArray<double> x( bound );
        for( int i=0;i<len;i++){
            x[i]=i;
        }
        p_var->vt = VT_ARRAY|VT_R8;
        x.CopyTo( &(p_var->parray) );
        return 0;
    }