功能:调用外部函数.(主要执行VB.NET、C#等支持反射的程序集函数)

格式:
[V1,V2,……,Vm]=CallFunction(SubName,Path,Type,InputN,P1,P2,……,Pn,OutVarM,OutSize)
[V1,V2,……,Vm]=CallFunction(SubName,Path,Type,InputN,P1,P2,……,Pn)
[V1,V2,……,Vm]=CallFunction(SubName,Path,Type)

SubName:字符串存储的反射执行的函数名称
Path:字符串存储的反射文件路径
Type:字符串存储的执行反射的类类型
InputN:输入变量个数
P1:第1个输入变量
P2:第2个输入变量
Pn:第n个输入变量
OutVarM:返回变量个数
OutSize:返回变量维度.此参数必须为矩阵变量,且其大小为OutVarM*2,每一行依次对应返回变量大小,如果返回的是矩阵变量,此值第一列为矩阵变量行数,第二列为返回变量列数.如果返回的是字符串变量,则对应行的值设置为0即可

V1:返回的第1个变量
V2:返回的第2个变量
Vm:返回的第m个变量

注意:

1、所写的类只支持字符串的传递以及双精度二维数组的传递

2、所写的类中函数必须是Sub类型,且里面的参数排列顺序为 SubName(P1,P2,……,Pn,V1,V2,……,Vm) ,且返回参数V1,V2,……,Vm必须是传引用使用"ByRef"关键字定义.

3、在函数的执行过程中不可使用"ReDim"关键字对返回参数V1,V2,……,Vm进行内存重新分配

4、且类名唯一(不区分大小写)

例子:

/*
如下一个VB.NET写的类,然后生产一个Dll文件,名为Fdll.dll,且放置于D盘,即文件所在路径为 D:\Fdll.dll ,下面演示如何调用这个外部函数

Public Class ClassT
    Public Sub Test(ByRef a(,) As Double, ByVal b(,) As Double, ByRef c(,) As Double, ByRef d(,) As Double)
        Dim i, j, m, n As Integer
        m = a.GetLength(0)
        n = a.Length \ m - 1
        m -= 1
        For i = 0 To m
            For j = 0 To n
                c(i, j) = a(i, j) + b(i, j)
                d(i, j) = a(i, j) * b(i, j)
            Next
        Next
    End Sub
End Class

*/

a=1:10;
b=a+20;
cdsize=[1,10
      1,10];
[c,d]=CallFunction("test","D:\Fdll.dll","ClassT",2,a,b,2,cdsize)//回车得到如下结果
c =
[ 22.0000000000000    24.0000000000000    26.0000000000000    28.0000000000000    30.0000000000000    32.0000000000000    34.0000000000000    36.0000000000000    38.0000000000000    40.0000000000000 ]
d =
[ 21.0000000000000    44.0000000000000    69.0000000000000    96.0000000000000    125.000000000000    156.000000000000    189.000000000000    224.000000000000    261.000000000000    300.000000000000 ]
