:ⲿ.(ҪִVB.NETC#ַ֧ĳ򼯺)

ʽ:
[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 ]
