精通VC与MATLAB联合编程――综合举例二[组图](2)
仔细查看类ISJHSJY的参数,如图2所示
图2
在类ISJHSJY中 有调用函数格式说明:
ISJHSJY __RPC_FAR * This, /* [in] */ long nargout, /* [out][in] */ VARIANT __RPC_FAR *w1, /* [out][in] */ VARIANT __RPC_FAR *b1, /* [out][in] */ VARIANT __RPC_FAR *w2, /* [out][in] */ VARIANT __RPC_FAR *b2, /* [out][in] */ VARIANT __RPC_FAR *ET, /* [out][in] */ VARIANT __RPC_FAR *a2, /* [in] */ VARIANT P, /* [in] */ VARIANT T, /* [in] */ VARIANT me, /* [in] */ VARIANT eg, /* [in] */ VARIANT lr, /* [in] */ VARIANT P2, /* [in] */ VARIANT T2, /* [in] */ VARIANT S1); 其中nargout 为输出参数的个数;w1,b1,w2,b2,ET,a2为 Variant型输出参数;P,T,me,eg,lr,P2,T2,S1为Variant型输入参数;
可以看出通过Variant型数据,可以很方便的在VC和MATLAB之间建立起数据交换,关于Variant数据类型可以查看MSDN帮助文档或VC类库手册。
5、关键代码:
SAFEARRAYBOUND rgsabound1[2]; rgsabound1[0].lLbound=0; rgsabound1[1].lLbound=0; rgsabound1[0].cElements=4; rgsabound1[1].cElements=6;VariantInit(&TTT);TTT.vt=VT_R8|VT_ARRAY;TTT.parray=SafeArrayCreate(VT_R8,2,rgsabound1);TTT.parray->pvData=HH2; 以上代码用来在VC中将输入参数转换为Variant型,建立Variant型4×6二维数组,其中HH2为double型一维数组,TT为函数中的一个输入参数,为Variant型;程序中,输入参数和输出参数基本都为二维数组。