我在VC中编了一个DLL格式如下:
extern "C" void WINAPI EXPORT ymq (double x[], double y[],double a[],int n,int m)

   //源文件
 
}
我在VB中声明:
Private Declare Function ymq Lib "ymq.dll" (ByRef x As Double, ByRef y As Double, ByRef a As Double, ByVal n As Integer, ByVal m As Integer)在VB中应用:
Dim x1(101)  As Double
Dim y1(101)  As Double
Dim a1(2) As Double
Dim k As Double
Dim i As Integer
For i = 0 To 100
x1(i) = -1# + 0.02 * i
y1(i) = 10 * x1(i)
Next
ymq x1, y1, a1, 101, 2  '在里有错误,说是参数BYREF错误.我搞不懂该怎样传递参数?
该成ymq x1(), y1(), a1(), 101, 2  '也有错误
把声明该成Private Declare Function ymq Lib "ymq.dll" (ByVAL x As Double, ByVAL  y As Double, ByVAL a As Double, ByVal n As Integer, ByVal m As Integer
也有错误
我该怎么改? byval 与BYREF的区别是什么?谢谢大家!

解决方案 »

  1.   

    byval 表示传送的是值 
    byref 表示传送的地址你的DLL 源码能发一份给我看看码[email protected]
      

  2.   

    byval 
    VB调用dll要用byval
      

  3.   

    在VB调用DLL时,使用数组参数!!!
    采用传引用方式byref,传递VB数组第一个元素即可!!
    ymq x1(0), y1(0), a1(0), 101, 2
      

  4.   

    发贴人:
      发现了问题。VB的DOUBLE 与VC的DOUBLE不能改换。该为VB(SINGLE)VC用(FLOAT)
    发现VB的数据可以传给VC,但是VC不能给VB。大家再想想。
    谢谢!